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

时间:2015-07-08 14:56:40

标签: c++ linux performance malloc

我的问题看起来像这样: 我有一个解析电报的功能,占用所包含数据的总处理时间的最大块时间。我想通过降低解析报文的成本来减少总处理时间。由于电报需要大量的字符串处理,我怀疑在提取信息时隐含的字符串复制可能是此问题最可能的来源。

我在寻找什么: 一个工具 - 用于从C ++源代码在Linux系统上创建的可执行文件 - 它提供了有关在处理电报的函数中实际花费多少时间在malloc / free上的信息。 一个理想的输出会给我这样的东西: - 在parseTelegram上花费了10毫秒 - 在malloc / free上花费5毫秒(在parseTelegram中) 我使用过callgrind,但它似乎没有在malloc / free级别给我这些信息。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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