优化libc中"问题"的代码

tpg*_*114 3 optimization performance intel-vtune

我有一个C++代码,我正在玩英特尔的VTune,我运行了一般探索分析,不知道如何解释结果.它标志着退役摊位的数量.

就这一点来说,这足以让我感到困惑,因为我可能已经在脑海中了.但它列出为具有异常量的功能的退是档位_int_mallocmalloc_consolidate,无论是在libc.所以我甚至不能看到我自己的代码,并试图弄清楚它并不是我真正开始改变的东西.

有没有办法使用该信息来改进我自己的代码?或者它真的只是意味着我应该找到更少或更少分配的方法吗?

(注意:手头的具体代码不是问题,我正在寻找解释数据的策略,并在热点或档位或在我的控件之外的代码中可能出现"问题"时改进一些事情)

Ali*_*Ali 5

有没有办法使用该信息来改进我自己的代码?或者它真的只是意味着我应该找到更少或更少分配的方法吗?

是的,它几乎听起来像你应该在改变你的代码,这样的malloc被调用次数减少.

  • 堆分配真的有必要吗?

  • 是否有可以重复使用的缓冲区?

  • 使用内存池是一个选项吗?

  • 你可以做堆栈分配吗?例如,如果这些是数组,您是否恰好知道这些数组在编译时的最大大小?

根据您的应用程序,内存分配可能很昂贵.我曾经通过从紧密循环中删除内存分配,使程序速度提高了20倍.Linux上的应用程序并不是那么慢,但它在Windows上是一场灾难.我的更改后,在Windows上也可以.