いくつかの解凍プログラムのベンチマークをすばやく行うというアイデアがありました。たとえば、gzの場合、次のコマンドを実行します。
timeout 10 zcat foo.gz | wc -c
圧縮解除プログラムが10秒で抽出できるデータ量を測定します。
唯一の問題は、それが機能しないことです。zcatが強制終了されると、wcも強制終了されるため、バイトカウントは取得されず、Terminated
メッセージのみが取得されます。
だから、問題は次のとおりです:wcからカウントを取得する方法はありますか?
もちろん、代替手段があります:
一時ファイルへの書き込み:
timeout 10 zcat foo.gz > /dev/shm/x ; du -sb /dev/shm/x ; rm -r /dev/shm/x
これに伴う問題は、大量のメモリを使用することであり、パフォーマンスが低下する可能性があることです。代わりにulimitを使用する:
ulimit -t 10; zcat foo.gz | wc -c
これも機能しますが、CPU時間のみを測定するため、I / Oによるスローダウン(圧縮が悪化し、ディスクからより多くのバイトを読み取る必要があるため)は測定されません。より小さなテストファイルを作成する:
まあ、これはもちろん動作する可能性があり、最も良いソリューションかもしれません。ただし、これにより多くの一時ファイルが作成されます。
6
「パイプとトイレを壊す」を読んだとき、最初は配管に問題があると思いました!
—
-dr01