Valgrind缓存分析函数的两个不同部分

时间:2014-11-17 11:11:19

标签: caching gcc valgrind

我有一个C程序,我使用-g选项编译,然后运行:

valgrind --tool=cachegrind --branch-sim=yes ./myexecutable

这让我知道哪个功能包含瓶颈。然而,这是一个非常长的函数,我不清楚函数的哪个部分我得到了大部分缓存缺失。我不能(不想)将它分成两个不同的部分。

是否有办法(可能包括valgrind.h或某些神奇的#pragma内容)来指示Valgrind为函数的不同部分制作不同的统计信息?

1 个答案:

答案 0 :(得分:1)

要检查逐个函数的值,您可能使用过这样的cg_annotate:

cg_annotate cachegrind.out.1234

如果为该命令添加“--auto = yes”标志,则将显示每行的值:

cg_annotate --auto=yes cachegrind.out.1234

您可以将结果打印到文件中,以便搜索您的功能。请注意,只会显示对性能产生重大影响的行和函数,因此如果找不到某些行,则可能会对执行产生微不足道的影响。