You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化统计数组和、奇偶数量的C++代码,获得执行时间更短的算法?

问题解答

1 现有代码的优化方案

现有代码存在明显的优化空间,优化后可以有效减少执行时间,核心思路是减少不必要操作、提升IO效率,优化后的代码如下:

#include <iostream>
using namespace std;

int main() {
    // 关闭同步、解绑流提升IO速度
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    long long sum = 0;
    int odd_cnt = 0, even_cnt = 0;
    // 边读边计算,无需存储全部元素
    for (int i = 0; i < n; ++i) {
        int x;
        cin >> x;
        sum += x;
        // 位运算判断奇偶效率高于取模
        odd_cnt += (x & 1);
    }
    even_cnt = n - odd_cnt;
    cout << sum << " " << odd_cnt << " " << even_cnt << "\n";
    return 0;
}

主要优化点如下:

  • 取消数组存储:不需要把所有输入元素缓存下来,边读取边计算即可,省去动态数组的内存开销,同时把原代码的两次遍历合并为一次,减少循环执行开销
  • 加速输入输出:关闭cin和C标准IO的同步、解绑cin和cout,在输入量达到1e5量级时,IO速度能提升数倍
  • 奇偶统计优化:用位运算x & 1替代取模运算x % 2判断奇偶,位运算执行效率更高;同时偶数个数可以直接用总个数减奇数个数得到,省去分支判断
  • 避免无效内存操作:取消了动态数组申请,也就避免了原代码未释放数组带来的内存泄漏风险

2 代码优化方法的获取渠道

你可以通过以下几个渠道系统学习代码优化相关知识:

  • 编程语言、编译器官方文档:官方会明确给出语言特性的性能差异、编译器内置的优化规则和使用建议
  • 专业技术书籍:比如《深入理解计算机系统》可以帮你理解程序底层运行逻辑,《算法导论》讲解算法复杂度优化思路,对应编程语言的性能优化专项书籍会给出具体语言的落地优化技巧
  • 编程竞赛相关内容:各类算法竞赛的经验分享、常见题型的实现方案中,会有大量针对执行速度、内存占用的实用优化技巧
  • 性能调试工具实践:通过perf、gprof、VS性能分析器等工具实测代码运行瓶颈,针对性调整的经验积累是最有效的优化学习路径
  • 行业技术分享:大厂技术团队公开的性能优化实践案例、线下技术沙龙的相关分享,也能获取到大量落地性强的优化经验

内容的提问来源于stack exchange,提问作者golden_hacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:24:06