在Ubuntu上,可以使用一些工具来测量两段程序的计算量,如下所示:
time
-
time命令:time命令可以用于测量程序的执行时间。在终端中运行以下命令来执行程序并测量其执行时间:
time ./program
这将输出程序的执行时间,包括用户时间、系统时间和实际时间。
在运行的程序之前加 time 最后得出三个时间 real、 user、 sys。- real是程序的实际运行时间。从程序开始到程序执行结束时所消耗的时间,包括CPU的用时和所有延迟程序执行的因素的总和。
- sys是内核态的时间。
- user是用户态的时间。
单核情况,real远远大于user和sys之和。
CPU用时被划分为user和sys两块。user表示程序本身,以及它所调用的库中的子例程使用的时间。sys是由程序直接或间接调用的系统调用执行的时间。
perf
-
perf命令:perf命令是一个强大的性能分析工具,可以用于测量程序的各种指标,如CPU周期、缓存命中率等。在终端中运行以下命令来使用perf命令测量程序的计算量:
perf stat ./program
这将输出程序的各种性能指标,包括CPU周期、指令数等。
- task-clock (msec): 事件表示目标任务真正占用处理器的时间,单位是毫秒。也称任务执行时间
CPUs utilized表示cpu使用率, 该值越高代表程序是CPU bound(计算密集型)而非IO bound(I/O密集型)- XXX seconds time elapsed:系程序持续时间
指定CPU
-C 或 --cpu 选项:可以指定程序运行在哪个 CPU 核心上。例如,perf record -C 0 ./program
或per stat -C 0 ./program
将程序运行在 CPU 核心 0 上。
-a 或 --all-cpus 选项:可以让程序在所有可用的 CPU 核心上运行。例如,perf record -a ./program
或per stat -a ./program
将程序运行在所有 CPU 核心上。
通过指定或限制 CPU,可以确保程序使用相同的 CPU 资源,从而更准确地对比运行时长。
https://www.cnblogs.com/wx170119/p/11855263.html
https://zhuanlan.zhihu.com/p/445260558
重复
-r <次数>或–repeat=<次数>:指定重复执行性能统计的次数。可以获得多个采样结果的平均值。perf stat -r 5 ./my_program
这条命令将会对./my_program程序进行五次性能统计。
可加--table
打印每轮的更多信息(每次的程序执行持续时间)
valgrind
-
valgrind工具:valgrind是一个用于调试和性能分析的工具集,其中包括了多个工具,如memcheck、cachegrind等。可以使用cachegrind工具来测量程序的缓存命中率。在终端中运行以下命令来使用cachegrind工具测量程序的计算量:
valgrind --tool=cachegrind ./program
这将输出程序的缓存命中率和其他相关信息。
以上工具可以帮助测量程序的计算量,并提供各种性能指标和分析结果。可以根据具体需求选择合适的工具进行测量。
ubuntu 重复执行命令
在Ubuntu中,可以使用for循环来重复执行一条指令50次。:
打开终端(Terminal)。
输入以下命令并按Enter键打开一个新的行:
for i in {1..50}; do <你的指令>; done
将 <你的指令> 替换为想要重复执行的指令。按Enter键执行该命令,指令将会被重复执行50次。文章来源:https://www.toymoban.com/news/detail-792590.html
例如,如果想要重复执行echo "Hello, World!"指令50次,你可以输入以下命令:文章来源地址https://www.toymoban.com/news/detail-792590.html
for i in {1..50}; do echo "Hello, World!"; done
``
这样,echo "Hello, World!"指令将会被重复执行50次,每次输出"Hello, World!"。
到了这里,关于ubuntu程序性能分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!