我有一个awk脚本发出长串(> 10K字符)到标准输出。stdbuf用法:增加缓冲区大小
我想增加缓冲区大小,以便一次写入较大的那些长字符串块。我计时两个管道下面有不同的尺寸-o但没有显著变化
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
真正/用户/ SYS时机都非常相似,oneanother(+ - 10%的每个指标)。
我的问题是我是否正确使用stdbuf?谢谢。
FZ。
谢谢。你有没有看到任何好处,保持在管道外,并在awk中显式转移输出(循环存储的字符串和> awk内的outfile.txt)? –
如果您需要对数据进行排序,您将受益于保持缓冲区大小更小,以便'sort'获取数据,而'awk'也生成数据,因此您可以从多核在你的CPU。如果你让'awk'在产生任何输出前暂停,那么就没有并行性,整个过程将会变慢。在正常情况下,缓冲区的默认大小是可以的。我不希望看到修补缓冲区大小的二阶以上性能收益。 –
谢谢你。非常有益的,有用的答案。 –