当前位置: 首页 > news >正文

C++ 性能优化

引言

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

一、基础优化:减少不必要的开销

二、数据结构优化

三、循环与分支优化

  1. 输入输出优化
    禁用同步流与解除绑定,速度提升数倍:

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

  2. 极端场景下使用scanf/printffread

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

  4. 减少函数调用开销
    热点函数添加inline关键字,短函数优先写成内联形式。

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

  6. 循环展开
    减少循环变量自增和判断次数:

    // 优化前
    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 中添加以下选项:

      g++ -O2 -march=native -ffast-math -o program program.cpp

    • -O2:启用基本优化
    • -march=native:针对本地 CPU 架构优化
    • -ffast-math:牺牲部分精度换取速度(慎用)
    • 五、效果测试

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

    • 未优化:1.2s
    • 启用 O2 + 循环展开:0.3s(提速 4 倍)
http://www.xdnf.cn/news/1180891.html

相关文章:

  • 力扣 hot100 Day54
  • pytest中使用skip跳过某个函数
  • 无人机速度模块技术要点分析
  • 第三章:掌握 Redis 存储与获取数据的核心命令
  • MNIST 手写数字识别模型分析
  • 秋叶sd-webui频繁出现生成后无反应的问题
  • 【Web APIs】JavaScript 节点操作 ⑧ ( 删除节点 - removeChild 函数 | 删除节点 - 代码示例 | 删除网页评论案例 )
  • 算法竞赛阶段二-数据结构(34)数据结构链表STL vector
  • 【PyTorch】图像二分类项目-部署
  • Spring Boot 3整合Spring AI实战:9轮面试对话解析AI应用开发
  • HttpServletRequest深度解析:Java Web开发的核心组件
  • PyTorch数据选取与索引详解:从入门到高效实践
  • Vue3 面试题及详细答案120道(91-105 )
  • 开立医疗2026年校园招聘
  • 论文复现-windows电脑在pycharm中运行.sh文件
  • 工具篇之开发IDEA插件的实战分享
  • C# 方法执行超时策略
  • 处理URL请求参数:精通`@PathVariable`、`@RequestParam`与`@MatrixVariable`
  • Lua元表(Metatable)
  • Python 使用环境下编译 FFmpeg 及 PyAV 源码(英特尔篇)
  • TDengine 转化类函数 TO_CHAR 用户手册
  • 【数字IC验证学习------- SOC 验证 和 IP验证和形式验证的区别】
  • 借助 VR 消防技术开展应急演练,检验完善应急预案​
  • 数据库底层索引讲解-排序和数据结构
  • 主流 BPM 厂商产品深度分析与选型指南:从能力解析到场景适配
  • 基于深度学习的CT图像3D重建技术研究
  • Python-初学openCV——图像预处理(二)
  • MySQL 表的操作
  • 大模型Prompt优化工程
  • Shell的正则表达式