【发布时间】:2019-02-05 06:06:50
【问题描述】:
我正在解决一个问题,我需要尽可能优化我的代码。
我有一个循环,我需要在其中进行一些计算,并且需要向数组中添加一个元素以进行进一步计算:
for (int i = 0; i < lightCount; i++) {
int dis = in.nextInt();
int dur = in.nextInt();
double unit = distance / duration * 3.6;
array[i] = unit;
if (speed < unit) {
double n = unit / (2 * speed);
if (!((n - (int) n) == 0))
n = n + 1;
int tmp = (int) (unit / (2 * (int) n));
if (tmp < answer)
answer = tmp;
}
}
以下哪种情况最好:
- 使用
unit或直接访问数组(将unit替换为array[i]) - 使用中间变量或直接计算结果。例如,删除
n并用它的公式替换它 - 创建许多方法来分解代码或将所有计算放在一个方法中
【问题讨论】:
-
in.nextInt()看起来您正在从控制台或文件中读取。无论您做什么,都无法抵消 IO 对性能的影响。 -
您是否进行了实验来衡量哪种方法更快?你的结果是什么?如果没有,您遇到了什么问题阻止您这样做?
-
您所说的微优化将被读取输入的开销(按数量级)相形见绌。
-
当 Java 的字节码优化器通过您的代码时,1、2 和可能的 3 都将无关紧要
-
向我们展示问题描述和更多解决方案。
标签: java performance optimization