私は主に C++ プログラマーですが、プロジェクトに Java を使用することを検討しています。パフォーマンス上の理由から、いくつかの SSE 組み込み関数を使用する必要があります (これらは、単純な C++ と比較しても速度を大幅に向上させることができます)。
私が理解しているように、Java でこれを行う方法は、JNI を使用し、C で SSE 組み込み関数を呼び出すことです。ただし、JNI のドキュメントを読んで、JVM がコピーを作成する場合と作成しない場合があると書かれているため、少し不安になりました。 Cに送信されて戻ってくる配列の。
最先端の実装、たとえば OpenJDK 7 を想定すると、 byte[] 、 short[] 、 int[] 、または float[] へのポインターを要求するときに、実際にいつコピーを期待する必要がありますか?
これまでのところ、いくつかの矛盾する主張しか見つかりませんでした。受け入れられるには、答えが私を納得させる必要があります。たとえば、意見/推測を表明するだけでなく、証拠を提供するか、情報源を引用します。
編集
- GetPrimitiveArrayCriticalへのリンク
- 前述したように、私の質問に答えるときに OpenJDK 7 を想定しても問題ありません。