[细节] += & +

本文通过分析两种不同实现方式的加法函数(直接返回求和结果与先进行累加再返回),利用ILDASM工具深入探讨了它们之间的效率差异。通过比较两者的中间语言指令,可以发现不同的实现方式对编译后的代码大小及执行过程的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 某些算法函数最后几行操作都是一些数学运算,例如+ -。

这时候就有一个细节的问题了,比方说有一个加法函数:

public static long plus( long a, long b )                                                                                                                                   

函数体可以写成:

return a + b;

也可以写成:

a += b; return a;

那么,那种效率更高?

一下是用IL DASE分析的2个函数的结果:

前者:

  // 代码大小       9 (0x9)
  .maxstack  2
  .locals init (int32 V_0)
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldarg.1
  IL_0003:  add
  IL_0004:  stloc.0
  IL_0005:  br.s       IL_0007
  IL_0007:  ldloc.0
  IL_0008:  ret

后者:

  // 代码大小       12 (0xc)
  .maxstack  2
  .locals init (int32 V_0)
  IL_0000:  nop
  IL_0001:  ldarg.0
  IL_0002:  ldarg.1
  IL_0003:  add
  IL_0004:  starg.s    a
  IL_0006:  ldarg.0
  IL_0007:  stloc.0
  IL_0008:  br.s       IL_000a
  IL_000a:  ldloc.0
  IL_000b:  ret

 

之后我就不说了~~~~~~因为~~~~~~~~我~~我~~~~实在是不知道~~~~~~哪个更有效率~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值