针对动态内存分配、释放的性能优化checklist
2018-01-21 10:50
232 查看
性能优化系列文章导航:《新的职业目标,以及C++性能优化》
针对动态内存分配、释放的性能优化checklist
(1)使用内存池库。
要求: 异常安全。
线程安全,多线程支持。
池化对象。池库中可以创建多个对象,一个对象一个池块,每个对象的内存块大小相同。
(2)减少动态变量的使用。
(3)为使用频繁的动态类定义类专用内存管理器。
笔者对这一点并不十分理解。作者说这么做可以提高内存分配的速度,理由是new分配相同大小的内存块的速度比分配随机大小的内存块的速度要高效。
(4)预分配足够空间以防止动态变量的重新分配。
(5)减少内存拷贝。
(6)避免或减少对象的内存拷贝。如:
拷贝构造
赋值运算符
函数参数
函数返回值临时对象
插入对象到STL容器
(7)使用指针的引用来避免指针传参错误。
(8)使用C++11的右值引用和std::move来优化临时对象。
针对动态内存分配、释放的性能优化checklist
(1)使用内存池库。
要求: 异常安全。
线程安全,多线程支持。
池化对象。池库中可以创建多个对象,一个对象一个池块,每个对象的内存块大小相同。
(2)减少动态变量的使用。
(3)为使用频繁的动态类定义类专用内存管理器。
笔者对这一点并不十分理解。作者说这么做可以提高内存分配的速度,理由是new分配相同大小的内存块的速度比分配随机大小的内存块的速度要高效。
(4)预分配足够空间以防止动态变量的重新分配。
(5)减少内存拷贝。
(6)避免或减少对象的内存拷贝。如:
拷贝构造
赋值运算符
函数参数
函数返回值临时对象
插入对象到STL容器
(7)使用指针的引用来避免指针传参错误。
(8)使用C++11的右值引用和std::move来优化临时对象。
相关文章推荐
- 频繁分配释放内存导致的性能问题的分析 --(附)malloc分配原理浅析 mmap关注焦点 如何优化分配内存
- (转)!!频繁分配释放内存导致的性能问题的分析 --(附)malloc分配原理浅析 mmap关注焦点 如何优化分配内存
- C中的动态内存分配和释放(free)
- 动态内存分配(new)和释放(delete)
- C和C++中动态分配和释放内存的方式及其区别
- c与c++分别是怎样动态分配和释放内存的,有什么区别?
- Delphi中内存的动态分配与释放
- C/C++动态分配与释放内存的区别详细解析
- C与C++动态分配,释放内存的区别
- sds(简单动态字符串) 内存预分配优化策略
- 频繁分配释放内存导致的性能问题的分析
- C语言内存动态分配与释放
- 使用tcmmaloc优化mysql的内存分配性能
- C++编程入门系列之三十二(数组、指针和字符串:动态内存分配和释放)
- 性能优化-一次OOM的解决经验分享-谈动态扩容可能导致的内存隐患
- 鸡啄米:C++编程入门系列之三十二(数组、指针和字符串:动态内存分配和释放)
- [笔试] C和C++动态内存分配和释放的区别
- 【百度分享】频繁分配释放内存导致的性能问题的分析
- [百度分享]频繁分配释放内存导致的性能问题的分析
- Linux开发心得总结2 - 频繁分配释放内存导致的性能问题的分析