【发布时间】:2015-10-12 18:11:41
【问题描述】:
我需要通过向程序提供越来越大的输入文件来对程序进行压力测试。我有一个输入文件inputSmall.txt,我想将N 次和cat 复制到同一个文件中。 N 是大文件。如果有任何比以下简单循环更快的方法(例如N=1000):
for i in {1..1000}
do
cat inputSmall.txt >> input1000.txt
done
我的机器有足够的磁盘空间来存储inputN.txt 非常大的Ns,并且有很多内存,以防相关。
谢谢
【问题讨论】:
-
for i in {1..1000}; do cat inputSmall.txt; done >> input1000.txt理论上可能更快,但我不知道它在实践中是否有所作为。 -
cat inputSmall.txt{,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,} >> inputNN.txt有效,但需要正确数量的逗号。您可以生成大括号字符串,但是您需要使用eval cat inputSmall.txt{$commavar}来执行它,这并不令人愉快。 -
for ((i=0; i<1000; i++)); do printf '%s\0' inputSmall.txt; done | xargs -0 cat >input1000.txt是另一种小/最小的方法,至少最小化cat调用的次数和打开输出文件的次数(但不会最小化输入文件的打开次数)重读)。