gpt4 book ai didi

java - JNI 什么时候需要复制原始类型的数组?

转载 作者:行者123 更新时间:2023-11-29 08:05:54 26 4
gpt4 key购买 nike

我主要是一名 C++ 程序员,但我正在考虑在一个项目中使用 Java。出于性能原因,我将需要使用一些 SSE 内在函数(即使相对于普通 C++,它们也可以极大地提高速度)。

据我所知,在 Java 中执行此操作的方法是使用 JNI 并在 C 中调用 SSE 内在函数。但是,我在 JNI 文档中读到的内容让我有点不安,因为它说 JVM 可能或可能不创建发送到 C 和返回的数组的副本。

假设一个最先进的实现,比如 OpenJDK 7,当我请求一个指向 byte[]、short[]、int[] 或 float[] 的指针时,我应该什么时候真正期待复制?

到目前为止,我只发现了一些相互矛盾的说法。要被接受,答案必须让我信服:例如提供证据或引用来源,而不仅仅是表达意见/猜测。

编辑

  1. 链接到 GetPrimitiveArrayCritical
  2. 正如我提到的,在回答我的问题时假设 OpenJDK 7 是可以的。

最佳答案

我会考虑使用具有 native 字节顺序的直接 ByteBuffer。这样做的好处是它以某种方式使用 C 空间内存,这意味着您无需复制它即可在 Java 中访问它(反之亦然)

关于java - JNI 什么时候需要复制原始类型的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11298518/

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