C++ 性能优化实战:内存、CPU 与 I/O 效率提升指南
深入探讨 C++ 性能优化的核心知识,帮助你掌握提升代码执行效率的关键技巧。通过学习,你将能够理解性能分析的方法,学会优化内存管理以减少泄漏和碎片,掌握 CPU 优化技巧提高执行速度,并优化 I/O 操作提升读写效率。
性能优化的基本原则
优化前务必遵循以下准则:
- 先测量后优化:必须先用工具找出瓶颈,而非盲目猜测
- 聚焦关键路径:只优化对整体性能影响最大的部分
- 保持可维护性:优化后的代码仍需易于理解和维护
- 验证结果:优化后必须测试正确性及性能提升效果
常用分析工具包括 GProf、Valgrind、Perf 以及 Visual Studio Profiler,根据平台选择合适的工具进行定位。
内存管理优化
智能指针与内存泄漏
手动管理内存容易引发泄漏,推荐使用智能指针自动释放资源。
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() {
std::cout << "MyClass 构造函数" << std::endl;
}
~MyClass() {
std::cout << "MyClass 析构函数" << std::endl;
}
void doSomething() {
std::cout << "MyClass 正在做某事" << std::endl;
}
};
void useSmartPointer() {
std::shared_ptr<MyClass> ptr = std::make_shared<MyClass>();
ptr->doSomething();
}
int main() {
useSmartPointer();
return 0;
}
预分配减少内存碎片
对于已知大小的容器,提前 reserve 可以避免多次重新分配导致的碎片和拷贝开销。
#
{
size = ;
std::vector<> vec;
vec.(size);
( i = ; i < size; ++i) {
vec.(i);
}
}
{
size = ;
std::vector<> vec;
( i = ; i < size; ++i) {
vec.(i);
}
}
{
start = std::chrono::high_resolution_clock::();
();
end = std::chrono::high_resolution_clock::();
std::cout <<
<< std::chrono::<std::chrono::microseconds>(end - start).()
<< << std::endl;
;
}


