重複の可能性:
JNI呼び出しが遅くなる原因は何ですか?
まず、この質問は、本当の必要性よりも好奇心から生まれたものだと言わせてください。
System.arraycopy
たとえば、JavaからJNI呼び出しを実行する場合のオーバーヘッドと、配列を割り当てて要素をforループでコピーする場合のオーバーヘッドについて知りたいと思います。
オーバーヘッドが大きい場合は、システムコールを使用する代わりに、forループを使用するだけで補正される要素の大まかな「マジックナンバー」が存在する可能性があります。また、このオーバーヘッドの原因となるシステムコールには正確に何が関係していますか?スタックを呼び出しのコンテキストにプッシュする必要があると思います。これにはしばらく時間がかかる場合がありますが、プロセス全体の適切な説明を見つけることができません。
私の質問を明確にしましょう:
私は、arraycopyを使用することが、Javaで配列をコピーする最も速い方法であることを知っています。
そうは言っても、1つの要素のみの配列をコピーするためにそれを使用しているとしましょう。基盤となるOSを呼び出しているので、この呼び出しにはオーバーヘッドが必要です。このオーバーヘッドが何であるか、そして呼び出しの過程で何が起こるかを知りたいです。
arraycopyを使用して、私の質問の目的からあなたを誤解させてしまった場合は、申し訳ありません。JNI呼び出しのオーバーヘッドと、実際の呼び出しに何が関係しているかを知りたいです。