【发布时间】:2014-06-10 12:40:29
【问题描述】:
一般来说,这两个示例代码段的处理速度是否存在显着差异,如果是,哪个应该更快完成?假设“processA(int)”和“processB(int)”是两个示例共有的空值。
for(int x=0;x<1000;x++){
processA(x);
processB(x);
}
或
for(int x=0;x<1000;x++){
processA(x);
}
for(int x=0;x<1000;x++){
processB(x);
}
我正在寻找是否可以加快我的一个程序的速度,它涉及多次循环数据块并以不同的方式处理它。目前,它为每种处理方法运行一个单独的循环,这意味着总共运行了很多循环,但每个循环所做的工作很少。我正在考虑重写我的代码,以便每个循环都包含每种处理方法;换句话说,周期少得多,但每个周期的工作量更大。
这将是对我的程序结构的一次非常密集的重写。因此,除非它能给我带来显着的性能提升,否则不值得这么麻烦。
【问题讨论】:
-
可以肯定的是,第一个(同时运行的单个循环)会更快(假设 A、B 是独立的,并且代码是连续的,没有我们中间缺少的东西)。这只是通过计算操作,因为在一个循环中,您可以保存 1000 次对 ++ 的调用。除此之外,我不知道有什么区别。
-
您还可以保存 1000 次 x 到 1000 的比较。
-
@BrettOkken @Elayeek 我很确定 x 的 1000 次比较(以及对 ++ 的 1000 次调用)已被编译器/JVM 解决(尤其是因为
1000是硬编码的)所以第一个示例对第二个示例的改进充其量是微不足道的。 -
@Ceiling Gecko 我只是指出,虽然 Elayeek 只提到了对 ++x 的调用,但也有 x 与 1000 的比较。我同意性能可能几乎没有差异,尤其是在执行时足以优化。
标签: java performance for-loop