性能度量显示每个函数调用的malloc影响



问题是这样的:我有一个解析电报的函数,它在处理包含的数据的总时间中占用最大的时间。我想通过减少解析电报的成本来减少总处理时间。由于电报需要大量的字符串处理,我怀疑在提取信息的同时隐含地复制字符串可能是这个问题的最可能的来源。

我在找什么:一个工具—用于在Linux系统上从c++源创建的可执行文件—它可以告诉我在处理电报的函数中实际花费了多少时间在malloc/free上。理想的输出是这样的:-在parseTelegram上花费10毫秒在malloc/free上花费5毫秒(在parseTelegram中)我已经使用了callgrind,但是它似乎没有在malloc/free级别给我这个信息。

我想用这样的输出来回答的问题:在parseTelegram函数中投入大量的时间去删除隐式字符串复制和/或使用从池中分配的字符串是否值得?

感谢您对如何检索信息的任何提示!非常感谢。

您可以使用抽样分析器,如oprofile。http://oprofile.sourceforge.net/about/

gprof似乎是一个选择。您可以使用它来确定程序的哪个部分占用了大部分的执行时间。https://sourceware.org/binutils/docs/gprof/

你只需要添加一些标志到你的编译器,你就可以开始了!

最新更新