C++统计资源消耗和耗时

在 Linux 下统计可执行程序的执行耗时,你可以使用 time 命令。它能够显示程序的用户时间、系统时间和总耗时等详细信息。以下是 time 命令的基本使用方式:

time ./your_program

其中 your_program 是你要运行的可执行文件。

输出解释:

real    0m2.123s  # 实际的时间(从程序开始到结束的总时间,包含了等待时间)
user    0m1.456s  # 程序在用户态执行的时间
sys     0m0.567s  # 程序在内核态执行的时间
  • real:从程序开始运行到结束的真实时间(包括等待时间,如I/O操作等待)。
  • user:CPU执行用户代码的时间(即程序本身消耗的时间)。
  • sys:CPU在操作系统内核中执行的时间(即系统调用消耗的时间,如文件读写等)。

高级用法:

  1. 保存结果到文件:你可以将耗时结果重定向到文件:

    /usr/bin/time -o output.txt ./your_program
    

    这将把耗时信息保存到 output.txt 文件中。

  2. 自定义格式:你还可以通过 -f 选项自定义输出格式。例如:

    /usr/bin/time -f "\nreal_time: %E\nuser_time: %U\nsys_time: %S" ./your_program
    
    • %E:实际耗时(real time)。
    • %U:用户态耗时。
    • %S:内核态耗时。
  3. 测量命令的平均耗时:你可以使用循环运行程序多次,然后计算平均值:

    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利用率等多种信息。

posted @   海_纳百川  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
本站总访问量8962226
 
点击右上角即可分享
微信分享提示