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

咨询C++中各类基础运算的速度排序:加减乘除、模运算及数学函数

C++基础运算与数学函数性能参考

一、基础运算速度通用排序(从快到慢)

以下是通用硬件与编译器优化下的性能趋势,不同CPU架构可能有细微差异,但量级一致:

  • 位运算(<<、>>、&、|等):最快,硬件直接操作二进制,单周期完成
  • 加法/减法:速度几乎无差异,均为单周期指令,性能持平
  • 乘法:现代CPU已优化为几周期完成,远快于除法类运算
  • 除法/取模:两者性能接近,取模通常依赖除法实现,属于多周期指令,比乘法慢1~2个数量级

二、数学函数的性能表现

三角函数(cos、tan)、对数函数(log、log10)等属于超越函数,性能远低于基础运算:

  • 这类函数无硬件原生指令支持,依赖数学库的近似算法(泰勒展开、查表插值等)实现
  • 单调用开销是基础运算的几十到上百倍,即便用AVX等向量指令集加速,依然远慢于基础运算

三、通用场景下的运算选择(以输入300、目标量级3为例)

若要得到量级为3的结果,优先选择低开销运算:

  • 整数场景下,300 / 100会被编译器优化为乘法+移位,性能接近乘法;如果是浮点数需求,300 * 0.01(浮点数乘法)也远快于除法/取模
  • 对比300 * 0.01和300 % 5:前者是乘法(或被优化为整数运算),后者是取模(依赖除法),可直接判定前者更高效,因为乘法的开销远低于除法类运算

四、可直接判定的低效运算

  • 除法/取模:在可用乘法、位运算替代的场景下,属于相对低效的选择。比如判断奇偶用x & 1替代x % 2,整数除以2用x >> 1替代x / 2
  • 超越函数:除非业务必须,否则尽量用基础运算组合的近似方案替代(精度允许的前提下)
  • 注意:现代编译器会自动将部分除法优化为乘法+移位,缩小性能差距,但从运算原生开销来看,除法依然属于低效范畴

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:05:23