for循环中的Random.nextInt

时间:2018-09-20 16:36:45

标签: android random

我正在遍历int[]中存储的位图中的一些像素数据

private int[] newImage(Random r, int[] px, int w, int h)
{
    int[] pixels = new int[w * h];

    for (int i = 0; i < w * h; i++) {
        pixels[i] = (r.nextInt(100) < 50) ? (px[i] & 0xffffff) : px[i];
    }
    return pixels;
}

Random.nextInt()方法似乎在大大降低速度。如果没有兰特(仅按位操作),则大约需要200毫秒。使用兰特,返回新的int[]大约需要640毫秒。原始的int[]并不是很大,而且似乎很慢。我可以做些什么来加快速度吗?理想情况下,我想在<50ms内重新获得新阵列

更新:

看来我遇到的速度缓慢主要是由于在模拟器中运行。即使使用rand.nextInt(),在实际设备(S7)上运行代码也会在大约65-80ms的时间内返回数​​组。如果可能的话,我仍然想尝试并优化更多。

0 个答案:

没有答案