私はstdoutに長い文字列(> 10Kの文字)を送信するawkスクリプトがあります。stdbuf usage:バッファサイズを増やす
バッファサイズを増やして、それらの長い文字列のチャンクが一度に書き込まれるようにしたいと思います。私は別の-oサイズの下に両方のパイプをタイムアウトしましたが、実際の/ユーザー/ SYSタイミングがすべてoneanotherすることは非常に似て有意な変化
time stdbuf -o 100MB awk -f processing.awk infile.txt | sort -k1,1 > outfile.txt
time stdbuf -o 100MB awk -f processing.awk infile.txt > outfile.txt
ありません(+ - 各メトリックに対して10%)。
私の質問は、私が正しい方法でstdbufを使用しているかどうかです。ありがとうございました。
FZ。
ありがとうございます。あなたはパイプラインに留まり、明示的に出力をawk内で流用する(awk内の格納された文字列と> outfile.txtをループしているにもかかわらず)ことに何らかの利益を見ますか? –
データをソートする必要がある場合は、バッファサイズを小さくして、 'sort'がデータを取得し、awkもデータを生成しているので、複数のコアの並列性の恩恵を受けることができますあなたのCPUに。 'awk'が終了するまで出力を生成しないようにすると、並列処理が行われず、全体的な処理が遅くなります。通常のイベントでは、バッファーのデフォルトサイズは問題ありません。私は、バッファーサイズで二次的なパフォーマンスの向上が見えるとは思っていません。 –
ありがとうございます。非常に有益な答えです。 –