gpt4 book ai didi

java - 复制数组每隔一个字节的最快方法

转载 作者:行者123 更新时间:2023-11-30 04:07:18 25 4
gpt4 key购买 nike

作为一个简单的问题:在 Java 中有什么方法可以将每个 other 字节从一个数组快速复制到另一个数组?

免责声明:我的代码已经足够快了,但我发现自己想知道是否有任何本地方法比简单的 for 循环更快。

问题详情(对于感兴趣的人):我将一个 YUV 字节数组拆分为三个单独的字节数组(Y、U 和 V)。如果您之前没有见过 YUV 数组(在 Android 标准 NV21 格式中),结构是 Y 的高度*宽度字节后跟(高度*宽度)/2 字节的 UV 数据(我们的眼睛对色度分辨率不太敏感)交错.可以使用 arraycopy 优化 Y 字节到专用数组的传输:

System.arraycopy(yuvs, 0, yArray, 0, imgSize.width*imgSize.height);

但是我将 UV 部分复制到专用阵列中,如下所示:

for (bt_y = 544; bt_y < previewSize.height*(3.0/2.0); bt_y++) {
for (bt_x = 0; bt_x < 960;) {
uArray[UVIndex] = yuvs[bt_y*960+bt_x++];
vArray[UVIndex++] = yuvs[bt_y*960+bt_x++];
}
}

是否有一种方法可以以某种方式接受“步幅”变量或允许以已知间隔选择元素的方法?

最佳答案

没有。 System.arraycopy 很快,因为它可以直接映射到 memcpy,而 memcpy 只是将一些内存从一个地方复制到另一个地方,零处理。

您的案例需要处理,并且必须在某个地方进行。您可以在 C (JNI) 中执行此操作,但根据我的经验,这是不值得的,JIT 编译器无论如何都会很好地优化这种简单的情况。

关于java - 复制数组每隔一个字节的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com