作为我学术项目的一部分,我必须执行一个 C 程序。
我想获取程序的执行时间。为此,我必须让 Linux 中的所有其他进程休眠几秒钟。有什么方法可以做到吗?
(我曾尝试time
在 Linux 中使用该命令,但它无法正常工作:当我执行同一程序时,它显示不同的执行时间。所以我通过查看开始时间和结束时间之间的差异来计算执行时间)。
作为我学术项目的一部分,我必须执行一个 C 程序。
我想获取程序的执行时间。为此,我必须让 Linux 中的所有其他进程休眠几秒钟。有什么方法可以做到吗?
(我曾尝试time
在 Linux 中使用该命令,但它无法正常工作:当我执行同一程序时,它显示不同的执行时间。所以我通过查看开始时间和结束时间之间的差异来计算执行时间)。
在调度程序从一个进程通勤到另一个进程的系统中,不可能获得进程执行的确切时间。
英特尔处理器插入了一个计算时钟数的寄存器,但即便如此,也无法测量时间。
您可以在 google 上找到一本书的 PDF 格式,“计算机系统:程序员的视角”——在这本书中,有一整章专门用于时间测量。
关于我能想到的最好方法是进入单用户模式,你可以使用
# init 1
在几乎任何发行版上。这也将停止 X,您将在原始控制台上。处理杂散鼠标移动造成的中断很可能是您看到的任何可变性的原因之一,所以这是一件好事。
当您想要恢复整个系统时,init 3
可能是那个,那个或init 5
.
执行此操作的通常方法是尝试尽可能地使机器停顿,然后进行几次测量并对它们进行平均。建议放弃第一次读取,因为这可能涉及缓存的填充。
There will always be a difference in execution time for things no matter how many processes you shut down, polling, IO, background daemons all affect execution priority.
The academic approach would be to run a sizeable sample and take statistics, you might also want to take a look at sar to log the background. To invalidate any readings you might take
使用时间命令。总和 user + sys 将为您提供程序直接使用 CPU 的时间加上系统代表您的程序使用 CPU 的时间。我想这是你想知道的。
尝试使用nice -n 20
. 它可能有助于使其他进程更安静。