我想分析我的代码,但我想不算一个函数。
我编译为: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