2010-03-04 96 views
8

我希望能夠看到我的應用程序中每個線程的「昂貴」是如何使用callgrind的。我使用--separate-thread=yes選項進行了配置,該選項爲您提供了整個應用程序的callgrind文件,然後每個線程一個。使用callgrind/kcachegrind獲取每個線程的統計信息

這是觀看任何給定的線程的輪廓是有用的,但我真正想要的是從每個線程的CPU時間只是排序列表,所以我可以看到哪些線程是最大的豬。

回答

3

Valgrind/Callgrind不允許這種行爲。 kcachegrind都沒有,但我認爲這會是一個很好的改進。也許有些答案可以在他們的郵件列表中找到。

的工作但真鑽方式可以是使用選項--separate-thread=no,並更新代碼以使用爲每個線程不同函數名或類名。根據你的代碼的複雜性,它可能是答案(使用1computeData(),2computeData(),..)

+0

是的,這與我所達到的結論大致相同。猜猜這是一個開源貢獻的好主意! – 2010-08-31 16:44:43

-2

只需打開多個同時在kcachegrind輪廓。