我有很多用C语言编写的短程序。每个程序都实现了简单的操作,例如:包含库,从文件中加载一些东西(例如矩阵),做简单的操作,将矩阵写入文件末尾。
我想测量整个程序(不仅仅是代码片段)的实时执行时间。
我的简单想法是使用 htop 或 ps aux -> 列时间。但是这种方法不好,因为我没有确切的执行时间,但是在上次刷新期间执行时间,我可以错过这个。
你有什么方法可以测量linux中的进程时间吗?
如果您的程序名为 foo,则只需键入
~$ time foo
应该做你想做的事。
除了其他答案,主要建议使用time
实用程序或 shell 内置:
linux-image-3.2.0-rt
包),或者至少一个配置有 的内核CONFIG_HZ_1000
)来获得更精确的时间测量。-lrt
library).如果你使用
time <PROGRAM> [ARGS]
这将提供一些基本信息。这应该运行你的 shell 的 time 命令。示例输出:
$ time sleep 2
real 0m2.002s
user 0m0.000s
sys 0m0.000s
但也有
/usr/bin/time <PROGRAM> [ARGS]
它更灵活,并提供了更多关于时间的诊断信息。这运行一个 GNU 计时程序。该站点有一些使用示例。示例输出:
$ /usr/bin/time -v sleep 2
Command being timed: "sleep 2"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:02.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 2496
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 202
Voluntary context switches: 2
Involuntary context switches: 1
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0