2012-07-25 65 views
0

作为我学术项目的一部分,我必须执行一个C程序。在linux中使用睡眠命令

我想获得程序的执行时间。为此,我必须在Linux中休眠所有其他进程几秒钟。有没有办法做到这一点?我试过在Linux下使用time命令,但是它不能正常工作:当我执行相同的程序时,它显示出不同的执行时间,所以我通过查看开始时间和结束时间之间的差异来计算执行时间)。

+3

即使你反复运行相同的代码,而无需任何其他进程运行,你还是会发现不同的运行时间 - 这是正常的。例如,第一次运行可能会预热(CPU,磁盘)缓存并使第二次运行更快。 – FatalError 2012-07-25 15:42:50

回答

1

关于我能想到的最好的办法是进入单用户模式,你在几乎任何分布

# init 1 

得到。这也会阻止X,你会在一个原始的控制台上。处理由于鼠标移动造成的中断可能是你看到任何变化的原因之一,所以这是一件好事。

当你想要你的完整系统回来,init 3可能是一个,那个或init 5

1

通常的做法是尽量让机器静止不动,然后进行几次测量并取平均值。建议放弃第一次阅读,因为这可能涉及高速缓存的人口。

1

不可能将进程执行时间确定为调度程序从1进程转换到另一个进程的系统。

英特尔处理器插入了一个计数时钟数的寄存器,但即使如此也无法测量时间。

在google上可以找到一本PDF格式的书籍,“计算机系统:程序员的视角” - 本书全部内容专门用于时间测量。

0

使用time命令。用户+ sys的总和会给你你的程序直接使用CPU的时间加上系统代表你的程序使用CPU的时间。我认为这是你想知道的。

0

无论您关闭了多少进程,轮询,IO,后台守护进程都会影响执行优先级,事情的执行时间总是会有所不同。

学术方法是运行一个相当大的样本并进行统计,您可能还想看看sar来记录背景。要使任何读数无效,您可能需要

0

尝试使用nice -n 20执行您的应用程序。这可能有助于使其他过程更安静。

nice man page