gpt4 book ai didi

java - 直接访问数组的一部分

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:24 26 4
gpt4 key购买 nike

为了加速我的图像处理应用程序,我尝试从中间开始寻址数组中的值,并使用从 0 开始的索引。

例如,当我使用两个数组时,我经常会遇到这样的情况:

public void work(int[] array1, int[] array2, int offset)
{
int len = array1.length;
for (int i = 0; i < len; i++)
array1[i] += array2[i + offset];
}

所以我想创建一个新变量 array3,它直接映射到 array2 的中间(不是副本),所以我可以这样做:

public void work(int[] array1, int[] array2, int offset)
{
int[] array3 = array2[offset]...;
int len = array1.length;
for (int i = 0; i < len; i++)
array1[i] += array3[i];
}

实际上,我想要一个与此 c 语句等效的 Java:

int *array3ptr = array2ptr + offset;

注意:我没有任何使用 JNI 或任何东西的经验,所以如果归结为使用它,请提供工作示例。

最佳答案

使用纯 Java 数组和 array[index] 符号是不可能做到的。在 Java 中,数组永远不会重叠

但是您可以将数组包装在 IntBuffer 中.如果您使用 direct buffer (请参阅 allocateDirect)您应该获得真正好的性能。

语句如

int *array3ptr = array2ptr + offset;

会写成

IntBuffer array3 = array2.slice().position(offset);

这些

关于java - 直接访问数组的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10580139/

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