在Java中转换基元类型的成本

时间:2013-06-26 08:03:15

标签: java casting primitive-types

我有一个用Java编写的算法,迭代地执行原始构建,如:

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

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

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

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

1 个答案:

答案 0 :(得分:5)

我们假设为了讨论,val1和val2都是 double,你仍然想得到一个int(因为你说这只是一个例子)。

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

double val = Math.max(val1, val2)

VS

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

如果您正确运行此基准测试(意味着在JVM中执行蠕虫并测量其数量) 数百万次通话的时间) 与Math.max()

相比,你很可能会发现演员阵容中的时间是无效的

通常,在为了性能而使代码不易阅读和更复杂之前, 首先,您需要知道性能增益是真实的。