我希望这是提出这个问题的正确地方。
我想使用一些测试实例对程序进行基准测试。我主要对程序执行所花费的 CPU 时间感兴趣,为此,我找到了可以time
给我提供实际时间、用户时间和系统时间的命令。由于我对 Linux 还很陌生,我不确定应该选择哪一个。对我来说,用户和系统似乎是我最好的选择,但我不太确定应该选择哪一个。将它们加起来得到总 CPU 秒数是否有意义,或者在我的应用程序中用户是否最有意义?
任何帮助都值得感激!
答案1
time
默认情况下,系统上有两个命令:
bash
shell 关键字在
运行 时会调用它time
,可以使用 获得有关它的帮助help time
。如果要调整其输出,请阅读TIMEFORMAT
中的变量man bash
。- 二进制文件
/usr/bin/time
如果您需要它,您需要用它的完整路径来调用它,您可以通过以下方式获取有关它的帮助man time
。
二进制/usr/bin/time
文件带有一个很好的-f, --format
选项,可让您选择其输出中的信息。 提到的手册页在 下有完整的说明符列表FORMATTING THE OUTPUT
,以下只是一些可能与您相关的建议:
钾该进程的平均总内存使用量(数据+堆栈+文本),以千字节为单位。
年代系统代表进程(在内核模式下)使用的总 CPU 秒数(以秒为单位)。
乌进程直接使用的 CPU 秒总数(在用户模式下),以秒为单位。
如果S
和U
在您的案例中很重要,并且您希望将两者放在不同的行上,那么您的命令行可能如下所示:
/usr/bin/time -f "%S\n%U" /path/to/program
由于和S
也U
适用于bash
,time
因此可以理解为:
TIMEFORMAT=$'%S\n%U' && time /path/to/program
值得注意的是,bash
关键字能够输出毫秒,而二进制只能输出厘秒。关键字也可能更快,因为不需要调用外部程序。
有关时间主题的概述,我建议阅读man 7 time
。