我有一个用 Java 编写的算法,它迭代地进行原始转换,例如:
int val = (int) Math.max(val1, val2);
由于我正在尝试提高算法的性能,我想知道是否必须避免重复上述转换,例如通过使用类似的东西:
int val = ((val1>val2) ? val1 : val2);
PS:我对 Stackoverflow 进行了搜索,但没有找到类似的答案。
我有一个用 Java 编写的算法,它迭代地进行原始转换,例如:
int val = (int) Math.max(val1, val2);
由于我正在尝试提高算法的性能,我想知道是否必须避免重复上述转换,例如通过使用类似的东西:
int val = ((val1>val2) ? val1 : val2);
PS:我对 Stackoverflow 进行了搜索,但没有找到类似的答案。
为了便于讨论,我们假设 val1 和 val2 都是 double 并且您仍然想获得一个 int (因为您说这只是一个示例)。
我建议首先比较你打电话的时间
double val = Math.max(val1, val2)
与:
int val = (int) Math.max(val1, val2);
如果您正确运行此基准测试(意味着在 JVM 中进行 wormup 并测量数百万次调用的时间量),您很可能会发现与 Math.max() 相比,演员表中的时间量是可以忽略不计的
一般来说,在为了性能而降低代码的可读性和更复杂之前,首先你需要知道性能提升是真实的。