Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
100mil 行の *.gz ファイルから行間隔を返すにはどうすればよいですか?
15mil から 20mil までの 5mil 行が必要だとしましょう。
これは最高のパフォーマンスのオプションですか?
zcat myfile.gz|head -20000000|tail -500 real 0m43.106s user 0m43.154s sys 0m9.259s
これは完全に合理的な選択肢です。行の長さがわからないため、基本的に行を解凍して反復し、行区切りがどこにあるかを把握する必要があります。3 つのツールはすべてかなり高度に最適化されているため、I/O と解凍時間は関係なく支配的になります。
理論的には、3 つのツールすべてを 1 つの実行可能ファイルにまとめた独自のソリューションを導入すると、(IPC のコストを少し削減することで) 少し節約できるかもしれませんが、その節約は無視できる可能性があります。