【发布时间】:2018-05-22 12:29:05
【问题描述】:
我想知道,在 int 数组中写入/读取的快速方法。
这是我的 Java 代码:我有三个 int 数组,两个用于读取访问权限,一个 int 数组用于写入访问权限。
for(int j = h20 ; j < h21 ; j++){
for(int i = w20 ; i < w21 ; i++){
if( int_color == arr3[j*h31 + i] ) continue; //condition
arr1[(j+decY)*w11 + i+decX] = arr2[j*w21 + i];
}
}
我的代码是一个经典的二维数组循环,只有一个特殊条件需要检查。
是否有其他方法可以编写此代码以减少处理时间?
谢谢。
【问题讨论】:
-
"是否有其他方法可以编写此代码以减少处理时间?" 因为您需要
i和j,即使您可以合并循环,你仍然需要h21 * w21迭代。所以不会有太大变化。现在,根据逻辑(我们这里没有所有数据)也许你可以简化一下。 -
除非您找到一种方法来减少索引计算中的操作数量,否则我会说这是尽可能优化的。您可以在进入第二个循环之前执行所有依赖于
j的操作,这样每个内部循环只需计算一次这些值。 -
您应该反转 if 语句的条件并删除
continue。 -
不,不可能改变逻辑,我知道问题是全局内存复制的障碍。
标签: java loops optimization