Unix命令的基准代码运行K次

假设我有一个在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)