可能重复:
是什么让 JNI 调用变慢?
首先让我说,这个问题更多是出于好奇而不是真正的必要性。
我很想知道从 Java 调用 JNI 的开销是什么,比如System.arraycopy
分配数组并使用 for 循环复制元素。
如果开销很大,那么可能有一个粗略的“幻数”元素,它可以通过简单地使用 for 循环而不是使用系统调用来补偿。而且,导致这种开销的系统调用到底涉及什么?我猜堆栈必须被推送到调用的上下文中,这可能需要一段时间,但我无法为整个过程找到一个好的解释。
让我澄清一下我的问题:
我知道使用 arraycopy 是在 Java 中复制数组的最快方法。
话虽如此,假设我正在使用它来复制一个只有一个元素的数组。由于我正在调用底层操作系统来执行此操作,因此此调用必须有开销。我很想知道这个开销是什么以及在调用过程中会发生什么。
很抱歉,如果使用 arraycopy 误导了您我的问题的目的。我很想知道 JNI 调用的开销,以及实际调用中涉及的内容。