在 Linux 下统计可执行程序的执行耗时,你可以使用 time
命令。它能够显示程序的用户时间、系统时间和总耗时等详细信息。以下是 time
命令的基本使用方式:
time ./your_program
其中 your_program
是你要运行的可执行文件。
输出解释:
real 0m2.123s # 实际的时间(从程序开始到结束的总时间,包含了等待时间)
user 0m1.456s # 程序在用户态执行的时间
sys 0m0.567s # 程序在内核态执行的时间
real
:从程序开始运行到结束的真实时间(包括等待时间,如I/O操作等待)。user
:CPU执行用户代码的时间(即程序本身消耗的时间)。sys
:CPU在操作系统内核中执行的时间(即系统调用消耗的时间,如文件读写等)。
高级用法:
-
保存结果到文件:你可以将耗时结果重定向到文件:
/usr/bin/time -o output.txt ./your_program
这将把耗时信息保存到
output.txt
文件中。 -
自定义格式:你还可以通过
-f
选项自定义输出格式。例如:/usr/bin/time -f "\nreal_time: %E\nuser_time: %U\nsys_time: %S" ./your_program
%E
:实际耗时(real time)。%U
:用户态耗时。%S
:内核态耗时。
-
测量命令的平均耗时:你可以使用循环运行程序多次,然后计算平均值:
for i in {1..10}; do time ./your_program; done
这种方法适合统计程序的耗时并可以用于性能分析。
如果系统中没有 time
命令,可以通过以下几种方式来统计程序的执行时间:
1. 使用 date
命令计算时间差
date
命令可以获取当前的时间戳,通过记录程序开始和结束的时间,计算出运行的总耗时。
start=$(date +%s) # 获取开始时间的时间戳(单位为秒)
./your_program # 运行你的程序
end=$(date +%s) # 获取结束时间的时间戳
echo "Runtime: $((end - start)) seconds" # 计算并输出耗时
如果需要更高的精度(以毫秒为单位),可以使用:
start=$(date +%s%3N) # 获取开始时间的时间戳(单位为毫秒)
./your_program # 运行你的程序
end=$(date +%s%3N) # 获取结束时间的时间戳
echo "Runtime: $((end - start)) milliseconds" # 计算并输出耗时
2. 使用 bash
的内置 SECONDS
变量
Bash 提供了一个名为 SECONDS
的内置变量,程序运行时会自动记录从脚本开始执行到当前时间的秒数。
SECONDS=0 # 初始化 SECONDS 变量
./your_program # 运行你的程序
echo "Runtime: $SECONDS seconds" # 输出耗时
3. 使用 perf
工具
如果你有 perf
工具安装,可以用它来统计程序的执行耗时及其他性能指标。perf
是一个强大的 Linux 性能分析工具。
perf stat ./your_program
perf
会显示总耗时、CPU利用率等多种信息。