首页 > 解决方案 > 添加然后比较值时的代码性能

问题描述

这里的问题是:我必须将两个数字相加,然后用该总和进行 3 次运算。因此,要么我将它们都添加并将它们的值放入一个变量并计算操作,要么我在执行任何操作时重新添加 like(a+b<c)。那么哪种方式内存效率更高,速度更快?

 val sum  = k+d
 if(sum<=b && sum>spend){
    spend = sum
 }

或者,

if(k+d<=b && k+d>spend){
   spend = k+d
}

标签: performancekotlinmemory-management

解决方案


这取决于上下文。如果k并且d恰好是编译时常量,那么编译器可以只k+d用总和替换,所以你写多少次都没关系k+d。此外,如果第二种形式更快并且sum变量不会转义函数(不返回或用作其他函数的参数),那么编译器可以替换sum为,k+d并且再次没有区别。编译器优化通常非常好,所以我认为您不必担心。

由于第一个更清晰,您应该这样做,但是您始终可以进行基准测试(确保不要使用编译时常量,因为总和会被优化掉)并调整该部分是否会成为瓶颈.


推荐阅读