我在C中有很多简短的程序。每个程序都实现简单的操作,例如:包含库,从文件加载某些东西(ex矩阵),做简单操作,将矩阵写入文件结束。
我想测量整个程序(不仅是代码片段)的实际执行时间。
我的简单想法是使用htop或ps aux - >列时间。但是这种方法并不好,因为我没有执行时间,但是在上次刷新期间没有执行时间,我可能会错过这个。
你有什么方法可以测量linux中的进程时间吗?
答案 0 :(得分:4)
如果你的程序名为foo,那么只需输入
即可~$ time foo
应该完全按照自己的意愿行事。
答案 1 :(得分:3)
除了其他答案,主要是建议使用time
实用程序或shell内置函数:
linux-image-3.2.0-rt
包),或者至少使用CONFIG_HZ_1000
配置的内核)来获得更精确的时间度量。-lrt
库)。答案 2 :(得分:2)
如果您使用
time <PROGRAM> [ARGS]
这将提供一些基本级别的信息。这应该运行你的shell的时间命令。示例输出:
$ time sleep 2
real 0m2.002s
user 0m0.000s
sys 0m0.000s
但也有
/usr/bin/time <PROGRAM> [ARGS]
更灵活,可提供更多有关时间的诊断信息。这运行GNU计时程序。 This site有一些使用示例。示例输出:
$ /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