5

我有一个用 Java 编写的算法,它迭代地进行原始转换,例如:

int val = (int) Math.max(val1, val2);

由于我正在尝试提高算法的性能,我想知道是否必须避免重复上述转换,例如通过使用类似的东西:

int val = ((val1>val2) ? val1 : val2);

PS:我对 Stackoverflow 进行了搜索,但没有找到类似的答案。

4

1 回答 1

5

为了便于讨论,我们假设 val1 和 val2 都是 double 并且您仍然想获得一个 int (因为您说这只是一个示例)。

我建议首先比较你打电话的时间

double val = Math.max(val1, val2)

与:

int val = (int) Math.max(val1, val2);

如果您正确运行此基准测试(意味着在 JVM 中进行 wormup 并测量数百万次调用的时间量),您很可能会发现与 Math.max() 相比,演员表中的时间量是可以忽略不计的

一般来说,在为了性能而降低代码的可读性和更复杂之前,首先你需要知道性能提升是真实的。

于 2013-06-26T08:07:29.077 回答