我有一个用Java编写的算法,迭代地执行原始构建,如:
int val = (int) Math.max(val1, val2);
由于我试图提高算法的性能,我想知道是否必须避免重复上述转换,例如使用类似的东西:
int val = ((val1>val2) ? val1 : val2);
PS:我对Stackoverflow进行了搜索,但我没有找到类似的答案。
答案 0 :(得分:5)
我们假设为了讨论,val1和val2都是 double,你仍然想得到一个int(因为你说这只是一个例子)。
我建议先比较一下你打电话的时间
double val = Math.max(val1, val2)
VS
int val = (int) Math.max(val1, val2);
如果您正确运行此基准测试(意味着在JVM中执行蠕虫并测量其数量) 数百万次通话的时间) 与Math.max()
相比,你很可能会发现演员阵容中的时间是无效的通常,在为了性能而使代码不易阅读和更复杂之前, 首先,您需要知道性能增益是真实的。