哪个更有效:i ++,或i + c(其中c = 0,1,2,...)

Tho*_*alc 2 java arrays android element

我需要在循环中设置一个非常大的数组的元素.continue在某些情况下,循环可能因此必须单独计算阵列位置.

我总是需要设置10 个连续的元素.(10是一个例子.在某些情况下,我可能需要30或更多.)

k+c(c = 0,1,2,......常数)还是k++更好的方法?从下面的两个解决方案中哪个更有效,为什么?

int k = 0;
for (int i = 0; i < aVeryHighNumber; i++) {                 
    if (continueRequired()) {
        continue;
    }

    k = ... // get k as a result of a certain calculation

    veryLargeArray[k++] = value0; // these values might be calculated on-the-fly
    veryLargeArray[k++] = value1;
    veryLargeArray[k++] = value2;
    veryLargeArray[k++] = value5;
    veryLargeArray[k++] = value4;
    veryLargeArray[k++] = value5;
    veryLargeArray[k++] = value6;
    veryLargeArray[k++] = value4;
    veryLargeArray[k++] = value7;
    veryLargeArray[k++] = value1;                   
}
Run Code Online (Sandbox Code Playgroud)

第二个解决方案:

for (int i = 0; i < aVeryHighNumber; i++) {                 
    if (continueRequired()) {
        continue;
    }

    k = ... // get k as a result of a certain calculation

    veryLargeArray[k]      = value0;
    veryLargeArray[k + 1]  = value1;
    veryLargeArray[k + 2]  = value2;
    veryLargeArray[k + 3]  = value5;
    veryLargeArray[k + 4]  = value4;
    veryLargeArray[k + 5]  = value5;
    veryLargeArray[k + 6]  = value6;
    veryLargeArray[k + 7]  = value4;
    veryLargeArray[k + 8]  = value7;
    veryLargeArray[k + 9]  = value1;
}
Run Code Online (Sandbox Code Playgroud)

理论上,第二个解决方案执行9个添加操作(它基本上是一个展开的循环),而第一个解决方案执行9 个递增,即它还需要存储值k.但是,一个人自我递增可能是一个非常有效的操作,所以我不确定第二个解决方案是否更快.

Lou*_*man 9

它不太可能有所作为.找到更重要的事情要担心.

(由额外任务产生的任何差异都将由JIT优化.真正可能性能差异不存在,而不仅仅是小的.)