performance - 添加然后比较值时的代码性能
问题描述
这里的问题是:我必须将两个数字相加,然后用该总和进行 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
}
解决方案
这取决于上下文。如果k
并且d
恰好是编译时常量,那么编译器可以只k+d
用总和替换,所以你写多少次都没关系k+d
。此外,如果第二种形式更快并且sum
变量不会转义函数(不返回或用作其他函数的参数),那么编译器可以替换sum
为,k+d
并且再次没有区别。编译器优化通常非常好,所以我认为您不必担心。
由于第一个更清晰,您应该这样做,但是您始终可以进行基准测试(确保不要使用编译时常量,因为总和会被优化掉)并调整该部分是否会成为瓶颈.
推荐阅读
- c# - 如何在 C# 中对 AForge 摄像头连接或摄像头断开做出反应?
- javascript - 为行中的任何字段输入信息后,如何添加必填字段,该行中的所有字段也应为必填项
- python - 从具有不同顺序的列表创建字典
- c++ - Ubuntu 20.04 上带有 boost-thread 的 Clang 10 链接错误
- java - 如何使用身份验证 JWT Bearer Java Spring 请求 Feign?
- php - AWS Elastic Bean Stalk,错误 403 Forbidden “您无权访问此资源。”
- azure - New-SqlAzureKeyVaultColumnMasterKeySettings 的替代方案
- python - 使用 h5py 压缩现有 HDF5 数据集并释放空间,无需复制或使用 h5repack
- c++ - 将函数指针分配给 constexpr 结构中的 typedef 函数的正确 C++ 方法是什么?
- matrix - VBA - 需要将单行向量转换为矩阵