我有一个用 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() 相比,您很可能会发现转换中的时间量可以忽略不计
一般来说,在为了性能而让代码的可读性变差和变复杂之前, 首先,您需要知道性能提升是真实存在的。
关于java - 在 Java 中转换原始类型的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17314679/