C++ 性能优化
引言
在算法竞赛或高性能程序开发中,C++ 代码的运行效率往往决定成败。本文总结 10 个实用的性能优化技巧,从代码编写到编译配置全方位提升程序速度。
一、基础优化:减少不必要的开销
二、数据结构优化
三、循环与分支优化
输入输出优化
禁用同步流与解除绑定,速度提升数倍:ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
极端场景下使用
scanf/printf
或fread
。避免全局变量初始化
全局变量默认初始化会耗时,局部变量在栈上分配更高效。减少函数调用开销
热点函数添加inline
关键字,短函数优先写成内联形式。优先使用数组而非容器
int a[1000]
比vector<int>
访问更快,避免动态内存分配。循环展开
减少循环变量自增和判断次数:// 优化前 for (int i = 0; i < n; i++) sum += a[i];// 优化后(n为4的倍数) for (int i = 0; i < n; i += 4) {sum += a[i] + a[i+1] + a[i+2] + a[i+3]; }
容器选择技巧
- 频繁插入删除用
list
,随机访问用vector
- 哈希表优先用
unordered_map
,但需注意哈希冲突 分支预测友好
避免在循环内使用复杂条件判断,可通过查表法替代。四、编译选项优化
在 GCC 中添加以下选项:
g++ -O2 -march=native -ffast-math -o program program.cpp
-O2
:启用基本优化-march=native
:针对本地 CPU 架构优化-ffast-math
:牺牲部分精度换取速度(慎用)五、效果测试
以 1e8 次整数加法为例,优化前后对比:
- 未优化:1.2s
- 启用 O2 + 循环展开:0.3s(提速 4 倍)
- 频繁插入删除用