我正在遍历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的时间内返回数组。如果可能的话,我仍然想尝试并优化更多。