mat*_*boy 5 java casting primitive-types
我有一个用Java编写的算法,它迭代地执行原始构建,如:
int val = (int) Math.max(val1, val2);
Run Code Online (Sandbox Code Playgroud)
由于我正在尝试提高算法的性能,我想知道是否必须避免重复上述转换,例如通过使用类似的东西:
int val = ((val1>val2) ? val1 : val2);
Run Code Online (Sandbox Code Playgroud)
PS:我搜索了Stackoverflow,但我没有找到类似的答案.
让我们假设为了讨论,val1和val2都是双重的,你仍然想得到一个int(因为你说这只是一个例子).
我建议先比较你打电话的时间
double val = Math.max(val1, val2)
Run Code Online (Sandbox Code Playgroud)
VS:
int val = (int) Math.max(val1, val2);
Run Code Online (Sandbox Code Playgroud)
如果正确运行此基准测试(意味着在JVM中进行蠕虫测量并测量数百万次调用的时间),您很可能会发现,与Math.max()相比,投射中的时间量是无效的.
通常,在为了性能而使代码不易读取和更复杂之前,首先需要知道性能增益是真实的.
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |