1GBのような非常に大きなファイルのwc -l
場合、遅くなることがあります。特定のファイルの改行の数を計算するより速い方法はありますか?
wc
オーバーヘッドが多すぎると思われる場合は、独自に実装してみてくださいforeach byte in file: if byte == '\n': linecount++
。Cまたはアセンブラーで実装されている場合、おそらく優先度が最も高いRTOSのカーネル空間を除いて(またはそのために割り込みを使用する場合を除いて)、それ以上速くなるとは思いません(システムで他に何もできない)。 ..大丈夫、私は脱線します;
time wc -l some_movie.avi
キャッシュされていないファイルをすばやく試してみました5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s
。これは基本的に@thrigが正しいことを証明します。この場合、I / Oはパフォーマンスを粉砕します。
time wc -l some_large_file_smaller_than_cache
連続して2回実行し、2番目の操作がどれだけ速いtime wc -l some_large_file_larger_than_cache
かを確認してから、実行間で時間が変化しないことを確認することです。ここで約280MBのファイルの場合、時間は1.7秒から0.2秒になりますが、2GBのファイルの場合は両方とも14秒です。
/usr/bin/time wc -l <file>
と言うの?あなたのハードウェアは何ですか?コマンドを繰り返し実行する方が速いですか?本当にもっと情報が必要です;)
0x0A
考えると、I / Oは間違いなくボトルネックです。