Multithreading 使用callgrind/kcachegrind获取每线程统计信息

Multithreading 使用callgrind/kcachegrind获取每线程统计信息,multithreading,valgrind,kcachegrind,callgrind,Multithreading,Valgrind,Kcachegrind,Callgrind,我希望能够看到我的应用程序中使用callgrind的每个线程有多“昂贵”。我使用--separate thread=yes选项进行了分析,该选项为整个应用程序提供一个callgrind文件,然后为每个线程提供一个 这对于查看任何给定线程的配置文件都很有用,但我真正想要的只是每个线程的CPU时间的排序列表,这样我就可以看到哪些线程是最大的负担。Valgrind/Callgrind不允许这种行为。kcachegrind也没有,但我认为这将是一个很好的进步。也许可以在他们的邮件列表上找到一些答案 一种

我希望能够看到我的应用程序中使用callgrind的每个线程有多“昂贵”。我使用
--separate thread=yes
选项进行了分析,该选项为整个应用程序提供一个callgrind文件,然后为每个线程提供一个


这对于查看任何给定线程的配置文件都很有用,但我真正想要的只是每个线程的CPU时间的排序列表,这样我就可以看到哪些线程是最大的负担。

Valgrind/Callgrind不允许这种行为。kcachegrind也没有,但我认为这将是一个很好的进步。也许可以在他们的邮件列表上找到一些答案


一种有效但非常枯燥的方法可能是使用选项
——separate thread=no
,并更新代码,以便为每个线程使用不同的函数名或类名。根据您的代码复杂性,答案可能是(使用1computeData()、2cComputeData()、…)

只需在kcachegrind中同时打开多个配置文件。

是的,这与我得出的结论大致相同。我猜这是一个开源贡献的好主意!