由于malloc的低效,一直在寻找替换的方案,最后突发其想,封装一个FastMM的DLL作为C++的内存管理器;然后重载全局的new和delete操作符。
如上方法执行之后,再跑原来的测试程序,效率果然与FastMM版本的一致了。
我原来以为VC版STL的默认内存管理器,会有大量的优化,后来跟进去才发现,它也不过是用了new和delete,如果不重载,则最终是调用malloc的。
如果要让STL也使用FastMM,则只能使用静态版的CRT。
如上方法执行之后,再跑原来的测试程序,效率果然与FastMM版本的一致了。
我原来以为VC版STL的默认内存管理器,会有大量的优化,后来跟进去才发现,它也不过是用了new和delete,如果不重载,则最终是调用malloc的。
如果要让STL也使用FastMM,则只能使用静态版的CRT。
C++内存管理优化:FastMM替代malloc及STL集成

本文介绍了一种通过封装FastMM DLL作为C++内存管理器,重载全局new和delete操作符来提高程序效率的方法。即使在使用VC版STL的默认内存管理器时,通过静态版CRT也能实现与FastMM一致的性能表现。
3446

被折叠的 条评论
为什么被折叠?



