C++ 性能优化

引言

在算法竞赛或高性能程序开发中,C++ 代码的运行效率往往决定成败。本文总结 10 个实用的性能优化技巧,从代码编写到编译配置全方位提升程序速度。

一、基础优化:减少不必要的开销
二、数据结构优化
三、循环与分支优化
  1. 输入输出优化

    禁用同步流与解除绑定,速度提升数倍:

    cpp 复制代码
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
  2. 极端场景下使用scanf/printffread

  3. 避免全局变量初始化

    全局变量默认初始化会耗时,局部变量在栈上分配更高效。

  4. 减少函数调用开销

    热点函数添加inline关键字,短函数优先写成内联形式。

  5. 优先使用数组而非容器
    int a[1000]vector<int> 访问更快,避免动态内存分配。

  6. 循环展开

    减少循环变量自增和判断次数:

    cpp 复制代码
    // 优化前
    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];
    }
  7. 容器选择技巧

    • 频繁插入删除用list,随机访问用vector

    • 哈希表优先用unordered_map,但需注意哈希冲突

    • 分支预测友好

      避免在循环内使用复杂条件判断,可通过查表法替代。

    四、编译选项优化

    在 GCC 中添加以下选项:

    cpp 复制代码
    g++ -O2 -march=native -ffast-math -o program program.cpp
    • -O2:启用基本优化
    • -march=native:针对本地 CPU 架构优化
    • -ffast-math:牺牲部分精度换取速度(慎用)
    五、效果测试

    以 1e8 次整数加法为例,优化前后对比:

    • 未优化:1.2s
    • 启用 O2 + 循环展开:0.3s(提速 4 倍)
相关推荐
ch.ju几秒前
Java程序设计(第3版)第四章——编译中的错误:无法覆盖
java·开发语言
阿正的梦工坊3 分钟前
【Rust】15-Rust 内存布局、Drop 顺序与 unsafe 边界
开发语言·rust
我认不到你5 分钟前
【开源、教程】RAG全流程实现(java+完整代码):第二弹
java·开发语言·人工智能·深度学习·ai·语言模型·开源
AKA__Zas17 分钟前
初识多线程plus(2.0)
java·开发语言·学习方法
Rabitebla18 分钟前
C++ 多态详解:从概念到虚表底层原理(代码轰炸)
开发语言·c++
charlie11451419122 分钟前
通用GUI编程技术——图形渲染实战(五十)——命中测试与鼠标事件路由:精确交互
c++·windows·架构·交互·图形渲染
砍材农夫29 分钟前
python 如何一次性安装项目所有依赖包(pip和uv)
开发语言·python·pip·uv
IpdataCloud30 分钟前
信贷审核中如何验证用户地址与IP属地一致性?用IP查询工具实现反欺诈
开发语言·tcp/ip·金融·php·ip
hetao173383731 分钟前
2026-05-25~06-11 hetao1733837 的刷题记录
c++·算法
洛水水36 分钟前
【力扣100题】82.有效的括号
c++·算法·leetcode