在文件输入中重复使用“perf”

在文件输入中重复使用“perf”

perf可以用来分析程序的性能。

假设您想测试程序的性能prgrm,使用文件的输入,您可以运行:

perf stat prgrm < inp.dat

现在,当您希望多次重复实验时,可以使用该--repeat选项,但是:

perf stat --repeat 50 prgrm < inp.dat

不起作用。我理解原因:它inp.dat是“管道”通过的perf,在第二次运行中,第一次运行已经“消耗”了整个文件,因此输入到标准输入的输入已到达末尾。

inp.dat但是,是否可以通过每次从头开始读取来重复运行实验?

答案1

如果您的程序无法获取输入文件名,那么您可能希望在每个 perf stat 迭代中使用 shell。我只是将你想要的全部内容放入一个小 shell 脚本中:

测试-prgrm.sh:

#!/bin/sh
prgrm < inp.data

然后运行:

perf stat --repeat 50 ./test-prgrm.sh

但即使没有中间 shell 脚本文件,您也可以使用 sh -c 来完成此操作:

perf stat --repeat 50 sh -c 'prgrm < inp.data'

默认情况下,perf 会为其调用的进程的所有子进程保留计数器。您可能会在 shell 执行中获得一些示例,但与程序的运行相比,这可能是较小的开销。

相关内容