假设我有一个在Unix下执行的代码:
$ ./mycode
我的问题是有没有一种方法可以让我的代码执行K次的运行时间。 例如K = 1000的值。
我知道Unix的“时间”命令,但只执行1个实例。
尝试
$ time ( your commands )
写一个循环进入parens根据需要重复你的命令。
好的,我们可以解决命令行太长的问题。 这是bash的语法,如果你使用另一个shell,你可能必须使用expr(1) 。
$ time ( > while ((n++ < 100)); do echo "n = $n"; done > ) real 0m0.001s user 0m0.000s sys 0m0.000s
改善/澄清查理的回答:
time (for i in $(seq 10000); do ./mycode; done)
只是一个建议的话:确保这个“基准”接近你的执行程序的实际使用。 如果这是一个短暂的生存过程,那么仅仅由于过程创造而可能会产生巨大的开销。 不要认为它和你的程序中的循环一样。
为了增强一些其他的反应,如果你决定测试一百万次,其中一些(基于seq的)可能会导致命令行太长。 以下没有这个限制
time ( a=0 ; while test $a -lt 10000 ; do echo $a ; a=`expr $a + 1` ; done)
“命令行太长”问题的另一个解决方案是在bash中使用C风格的循环:
$ for ((i=0;i<10;i++)); do echo $i; done
这也适用于zsh(虽然我敢打赌,zsh有一些更加方便的使用方法,但对于zsh我还是个新手)。 我无法测试其他人,因为我从来没有使用过其他人。
如果您担心不断地将可执行程序加载和卸载到进程空间的开销,我建议您设置一个RAM磁盘并从那里开启您的应用程序。
早在70年代,我们曾经可以在可执行文件上设置一个“粘性”位,并将其保留在内存中。我不知道现在支持这种行为的单个unix,因为它使更新应用程序成为一场噩梦。 ..:o)