如何从gprof中排除某个函数

How to exclude a certain function from gprof?

本文关键字:函数 排除 gprof      更新时间:2023-10-16

我想评测我的代码,但我希望有一个函数不算数。

我编译为:

g++ main_no_time.cpp -Wall -std=c++0x -p -pg -O3 -o eg

然后我以的身份运行

./eg Datasets/Klein_nb_P1000_dim10000.txt 16 5 3 1
gprof -Q ./eg > Klein_nb_P1000_dim10000_cpu_rot1.txt

我要排除的函数具有此签名。

void readDivisionSpace(Division_Euclidean_space& ds, char* filename);

我怎样才能做到这一点?

对于从平面轮廓中排除函数,您需要使用-P选项:

gprof eg gmon.out -P_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt

对于从调用图中排除函数,您需要使用-Q选项:

gprof eg gmon.out -Q_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt

此选项可以同时使用:

gprof eg gmon.out -P_Z17readDivisionSpaceRiPc -Q_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt

注:_Z17readDivisionSpaceRiPc是损坏的函数名称。对于检测损坏的函数名称,选项--no-demangle可能很有用。您可以尝试通过以下方式检测函数readDivisionSpace的损坏名称:

gprof eg gmon.out --no-demangle -Q -b | grep readDivisionSpace