1

これはオクターブ3.05の非常に古いインストールですが、centos-5では標準であり、多くの実稼働環境にまだ存在しています。オクターブをstraceすると、同じファイルに対して何度もstatを呼び出していることがわかります。同じファイルを記述しているだけで、半分の時間を費やしているに違いありません。サンプルは次のとおりです。

stat( "/ usr / local / share / octave / 3.0.5 / m / path"、{st_mode = S_IFDIR | 0755、st_size = 4096、...})= 0
stat( "/ usr / local / share / octave / 3.0.5 / m / plot"、{st_mode = S_IFDIR | 0755、st_size = 4096、...})= 0
stat( "/ usr / local / share / octave / 3.0.5 / m / pkg"、{st_mode = S_IFDIR | 0755、st_size = 4096、...})= 0
stat( "/ usr / local / share / octave / 3.0.5 / m / sparse"、{st_mode = S_IFDIR | 0755、st_size = 4096、...})= 0
stat( "/ usr / local / share / octave / 3.0.5 / m / control"、{st_mode = S_IFDIR | 0755、st_size = 4096、...})= 0
stat( "/ usr / local / share / octave / 3.0.5 / m / control / obsolete"、{st_mode = S_IFDIR | 0755、st_size = 4096、...})= 0
stat( "/ usr / local / share / octave / 3.0.5 / m / control / hinf"、{st_mode = S_IFDIR | 0755、st_size = 4096、...})= 0

何度も同じものがたくさんあるので、それは実際には完全な味を与えません。それはバーストで起こります。なぜこれを行うのですか、どうすれば停止させることができますか?または、少なくとも、常にではなく1回だけ実行するようにします。

4

1 に答える 1

2

私はそれを考え出した!Octave は、ファイルを stat-ing して、最後に stat-ed されてから変更されたかどうかを確認するために、変更のタイムスタンプをチェックします。これは無効にすることができ、オクターブのバージョンに関係なく、パフォーマンスが向上するはずです。

http://www.gnu.org/software/octave/doc/interpreter/Function-Files.htmlから:

Octave の実行中に独自の関数ファイルが変更されないことがわかっている場合は、 を呼び出してパフォーマンスを改善できignore_function_time_stamp ("all")ます。これにより、Octave はすべての関数ファイルのタイム スタンプを無視します。この関数に「system」を渡すと、デフォルトの動作がリセットされます。

于 2012-12-20T16:34:20.837 に答える