可能是重复问题:
JNI调用为什么慢?
首先,让我说这个问题更多的是出于好奇心而不是真正的必要性。
我很想知道在Java中使用JNI调用的开销是多少,比如使用System.arraycopy
和使用for循环分配数组并复制元素之间的差别。
如果开销很大,那么可能会有一个大致的元素“魔数”,在此之前仅使用for循环就可以弥补,而不是使用System调用。并且,究竟是什么导致了这种开销的系统调用?我猜测栈必须推到调用的上下文中,这可能需要一段时间,但我找不到有关整个过程的好解释。
让我澄清我的问题:
我知道在Java中使用arraycopy是复制数组的最快方法。
也就是说,假设我正在使用它来复制仅包含一个元素的数组。由于我正在调用底层操作系统来执行此操作,所以该调用中肯定会有开销。我对知道这种开销以及调用过程中发生的事情感兴趣。
如果使用arraycopy使您误解了我的问题的目的,我很抱歉。我想知道JNI调用的开销以及实际调用中涉及的内容。