gpt4 book ai didi

profiling - gprof 搞砸了

转载 作者:行者123 更新时间:2023-11-28 08:23:49 29 4
gpt4 key购买 nike

我正在尝试 2 配置一个 cpp 代码。我使用 -pg 标志进行编译,在分析它以获得输出后,我得到了一些非常奇怪的函数名称。这是我正在使用的 make 文件:

# Makefile for parallel simulated annealer

PREFIX=${PARSECDIR}/pkgs/kernels/canneal/inst/${PARSECPLAT}

TARGET=canneal
LIBS:=$(LIBS) -lm

CXXFLAGS+=-pg

ifdef version
ifeq "$(version)" "pthreads"
CXXFLAGS+=-DENABLE_THREADS -pthread
endif
endif

all:
$(CXX) $(CXXFLAGS) annealer_thread.cpp -c -o annealer_thread.o
$(CXX) $(CXXFLAGS) rng.cpp -c -o rng.o
$(CXX) $(CXXFLAGS) netlist.cpp -c -o netlist.o
$(CXX) $(CXXFLAGS) main.cpp -c -o main.o
$(CXX) $(CXXFLAGS) netlist_elem.cpp -c -o netlist_elem.o
$(CXX) $(CXXFLAGS) $(LDFLAGS) *.o $(LIBS) -o $(TARGET)

clean:
rm -f *.o $(TARGET)

install:
mkdir -p $(PREFIX)/bin
cp -f $(TARGET) $(PREFIX)/bin/$(TARGET)

这是 gprof 输出的示例:

Flat profile:

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
11.21 0.73 0.73 2800002 0.00 0.00 std::_Rb_tree<std::string, std::pair<std::string const, netlist_elem*>, std::_Select1st<std::pair<std::string const, netlist_elem*> >, std::less<std::string>, std::allocator<std::pair<std::string const, netlist_elem*> > >::_M_lower_bound(std::_Rb_tree_node<std::pair<std::string const, netlist_elem*> >*, std::_Rb_tree_node<std::pair<std::string const, netlist_elem*> >*, std::string const&)
10.45 1.41 0.68 5856992 0.00 0.00 atomic_load_acq_int(unsigned int volatile*)
8.76 1.98 0.57 400001 0.00 0.00 netlist_elem::routing_cost_given_loc(location_t)

这些是文件中真正的函数名称:

void annealer_thread::Run()

我忘记了任何标志吗?为什么分析还显示函数的参数?是因为他们是类(class)吗?是因为它是cpp吗?我熟悉 gprof 和 c 但这是我第一次接触 cpp

欢迎任何帮助:) cheers=)

最佳答案

在C++中,函数名包括它们所属的类、它们的返回类型以及它们所有的参数类型。这是通过“修改”名称来完成的。这样函数就可以用不同的参数类型重载。 gprof 知道这一点并且可以解开它们。

您在平面配置文件中看到的是,PC 通常在某些类库例程中被捕获。仅当它为您提供了代码中以这些例程结束的调用路径的线索时,它才有用。调用图(检测)在那里有一些帮助。

当然,它对您不想做的任何 I/O 都视而不见。该程序可能会花费 99% 的时间在库深处执行 I/O,而您不知道它正在发生,gprof 也不知道。

看看Zoom .

关于profiling - gprof 搞砸了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793665/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com