我想分析我的代码,但我想不算一个函数。

我编译为:
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

10-02 05:49