2013-07-11 40 views
2

我正在使用“time”命令分析Linux上的一个程序。问题是它的输出与统计不相关,因为它只运行一次程序。有没有一种工具或方法可以平均获得几次“时间”运行?可能aswe连同统计信息,如偏差?计算Linux中几个“时间”命令的平均值

+1

您可以从'time',运行'time -v $ {program}'获得额外的信息。尽管如此,它不会产生* statiscally相关的*数据,但您可以在'for'循环中运行它,并解析结果。除此之外,您可以使用诸如'gprof'和[其他]的分析器(http://stackoverflow.com/questions/1777556/alternatives-to-gprof)。 – Rubens

+0

你有源代码吗?如果你这样做,拿着'main'的主体并且把它包装成一个循环来执行它1000次。然后把时间除以1000. –

回答

5

这是我写的一个脚本,用于执行类似于你在找什么。它运行提供的命令10次,将真实的用户CPU和系统CPU时间记录到文件中,并在每个命令输出后回显tham。然后它使用awk提供文件中3列中每一列的平均值,但不包括标准偏差。

#!/bin/bash 

rm -f /tmp/mtime.$$ 

for x in {1..10} 
do 
    /usr/bin/time -f "real %e user %U sys %S" -a -o /tmp/mtime.$$ [email protected] 
    tail -1 /tmp/mtime.$$ 
done 

awk '{ et += $2; ut += $4; st += $6; count++ } END { printf "Average:\nreal %.3f user %.3f sys %.3f\n", et/count, ut/count, st/count }' /tmp/mtime.$$ 
+0

谢谢,这很好 - 只是需要它。我只是增加了'''NSAMPLES = $ {NSAMPLES-3}'',并且将$(seq 1 $ NSAMPLES)中的x的循环部分更改为 ',这样我就可以传递NSAMPLES env var来控制运行次数。 – EdvardM

0

就像上面提到的评论者一样,这听起来像你可能想要使用循环多次运行你的程序,以获得更多的数据点。您可以使用带-o选项的time命令将时间命令的结果输出到文本文件,如下所示: time -o output.txt myprog