我想使用标准实用程序而不是编译代码来有效地填充具有常量值的文件,重复N次。在简单版本中,值是单个字节;在复杂版本中 - 任意字符串。
注意:
dd if=/dev/zero of=/path/to/file bs=XXX count=YYY
表示适当的XXX和YYY值。$value >> file
,但这应该非常慢。答案 0 :(得分:1)
我们采取
value_to_replicate="whatever"
file_length=65536
output_file="/path/to/file"
例如。
根据@ dmadic的建议,我们可以这样做:
bash -c "printf ${value_to_replicate}%.0s {1..${file_length}} > $output_file"
(如果我没有"#34;最后的命令,那么${file_length}
的扩展存在问题。这在我的系统上的吞吐量约为0.6秒/ MB。
如果字符串以换行符结尾,则事情变得更简单:
yes "$value_to_replicate" | head -$file_length > $output_file
如果字符串没有换行符,我们也可以这样做:
yes "$value_to_replicate" | head -$file_length | tr -d '\n' > $output_file
答案 1 :(得分:0)
您可以使用Perl
,如下所示:
time perl -e 'print "Hello"x1000000000' > /dev/null
real 0m2.930s
user 0m1.778s
sys 0m1.151s
所以,3秒内5GB。