unixdd命令正是为此目的而制定的。
http://en.wikipedia.org/wiki/Dd_%28Unix%29
您可以编写一个小程序来连续将所需的填充字符(X在您的示例中)打印到 STDOUT 而无需换行符。将结果输入dd并指定bs和count参数,以便获得完全正确的文件大小。
然后,您可以调整bs和count参数以找到最大吞吐量。
编辑:示例:
yes X | awk '{ printf("%s", $0)}' | dd of=out.txt bs=1024 count=1024 2>/dev/null
你可以看到它非常快:
time yes X | awk '{ printf("%s", $0)}' | dd of=out.txt bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.123118 s, 8.5 MB/s
real 0m0.127s
user 0m0.144s
sys 0m0.004s
移动time通过管道的不同部分向我表明,dd无论你给它什么,但生产者并不是很快。(也许并不是最好的组合)yes。awk
如果您需要比这更快,也许您需要考虑其他接口,例如mmap.