我有非常高性能的 C++ 库。我正在考虑编写一个内存池,这样我就不必使用全局new
和delete
. 我做了一些阅读。但是想知道这是否会帮助我减少性能和内存泄漏。
问问题
1861 次
3 回答
2
除非您有非常具体的理由相信您的库将从自定义分配器中受益,否则它可能不会有太大帮助,如果有的话。
听起来您正在尝试执行无向优化。不。首先使用分析收集性能数据,然后在适当的情况下考虑优化。
于 2013-01-07T07:13:15.987 回答
1
一个针对应用程序的确切内存分配模式进行微调的内存分配器应该优于任何通用分配器——因为您的分配模式不同于“通用”并且是可预测的。但是,减少或检测内存泄漏是一个完全不同的问题,应该在任何性能问题之前解决。
于 2013-01-07T07:12:20.293 回答
0
根据我的经验,实现自己的内存池对性能没有帮助。因为在多线程环境中,您必须使用互斥锁来保护池上的内存分配和释放,而与系统新建/删除相比,互斥锁非常重。
它也无助于减少内存泄漏。要减少内存泄漏,您必须确保释放所有已分配的内存。它真的应该用你的程序而不是一个池来解决。
唯一的好处可能是帮助跟踪独立于第三方工具的内存使用情况。
于 2013-01-07T07:17:07.850 回答