http://www.itmedia.co.jp/help/tips/linux/l0298.html
ITmedia エンタープライズ : Linux Tips「余計なディスク書き込みを軽減させよう〜noatime編〜」
urlの設定を行いrebootするとディスクの書き込みスピードがアップします。
但し、urlにもありますが、この設定によってiノードのアクセス時間が更新されなくなる点をご注意ください。
http://www.hatena.ne.jp/1125455948#
人力検索はてな - [linux perl] ファイルの書き込み速度を向上させる方法。 perlで一度に複数のファイルを書き出すプログラムを作っていますが、openで書き出しています。 ファイルの数が..
システムコールを減らしましょう。
また、動的にメモリの増減が行われる場所をループ外に出し、予めメモリを確保しましょう。
恐らくファイルの数が増えるというのは見た目の問題で、実際の問題はメモリの確保・再確保にコストがかかっていると思われます。
差し支えなければ、出力部分のコード等載せていただけませんか。
foreachループの中にopenがあり、ファイルを書き出しています。
省いて書くと
foreach(){
if(){
$hoge = &sub($nantara);
open();
print $hoge
close();
}
}
http://www.hatena.ne.jp/1125455948#1
人力検索はてな - [linux perl] ファイルの書き込み速度を向上させる方法。 perlで一度に複数のファイルを書き出すプログラムを作っていますが、openで書き出しています。 ファイルの数が..
URLはダミーです。
$hoge = &sub($nantara);
この部分で、subを呼んだ時に$nantaraの内容のコピー、returnしたときに$hogeへの戻り値のコピーが多発しています。
これがループ内にあるとかなりの無駄なコピーが発生します。
関数subに渡す変数と戻りの変数で複写が発生しないようにスコープを変えてみてはいかがですか?
扱っているデータが大きい場合、相当なコストが発生します。
> 複写が発生しないようにスコープを変えてみてはいかがですか
具体的にはどのようにすればいいでしょうか。
戻り値を得ないで、グローバル変数に書き込むとかそういう事でしょうか。
ありがとうございます