巨大なログ ファイル (約 5 ~ 1000 万行) があります。すべての行をトラバースして処理を行う必要があります。私は巨大なランタイムを見ています。
perl
以下に示すように、ファイルを読み取る2つの方法を認識しています。
(1)異なる方法のパフォーマンスを比較するにはどうすればよいですか? ベンチマークメカニズムはありますか?
(2)最も効率的な方法とその理由は? 利用可能な3番目のより良い方法はありますか?
1 つのオプションは、両方のメソッドを実装してランタイムをチェックすることです。しかし、ここでは、何が高速または低速で実行されるのかを理解しようとしています。この点で私を助けていただければ幸いです。
方法 1
open FOPEN, '<', $file or die $!;
my @lines = <FOPEN>;
chomp @lines;
foreach (@lines) {
# do something on $_
}
方法 2
open FOPEN, '<', $file or die $!;
while (<FOPEN>) {
chomp;
# do something on $_
}