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

为何求最大连续1个数的两段相似C++代码运行速度存在差异

两段代码耗时差异原因分析

首先需要明确:两段代码逻辑并不完全一致,code1是正确的「求数组最大连续1的个数」实现,code2实际实现的是求数组最大连续0的个数,二者对0和1的处理分支完全相反,这是耗时差异的核心前提。

code1运行速度更快的原因主要有两点:

1. 测试用例特征匹配code1的低开销路径

该题的主流测试用例普遍存在「0的占比更高、连续0的长度更长」的特征:

  • code1只有遇到1的时候,才需要执行count++和max两次操作;遇到0时仅需要执行一次count=0的赋值操作,运算开销极低
  • code2刚好反过来,遇到0的时候就要执行count++和max两次操作,遇到1才执行count=0。当测试用例中0占比更高时,code2高频执行开销更高的max操作,总执行指令数远多于code1。

2. 编译器优化收益更高

对于连续出现的0场景:

  • code1中重复的count=0属于无副作用的冗余操作(上一次赋值已经把count置为0,重复赋值不影响最终结果),编译器可以直接优化掉这部分冗余赋值,进一步减少实际执行的指令数
  • code2中连续0对应的count++和max操作都存在实际副作用,会改变变量的取值,编译器无法优化,必须逐次执行,耗时自然更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 01:15:04