私は本当に重いビットのデコードと操作を行うJavaクラスを持っています。このクラスは、アプリ全体の実行時間のほぼ96%を占めます。私は、これらのビット操作のためのいくつかのCコードを記述し、Javaのネイティブメソッドを使用してCライブラリをロードすると、私のパフォーマンスが大幅に向上するのだろうか?JNIはビット操作のパフォーマンスを向上させるソリューションですか?
2
A
答えて
1
JNI /ネイティブコードが高速になるのを見る唯一の方法は、大きなデータセットをネイティブメソッドに渡してビット操作することでJNI呼び出しオーバーヘッドを克服することです。 Javaメソッドとは異なり、JNIメソッドはホットスポットによってインライン化/最適化することはできません。ネイティブ呼び出しでは、Javaメモリ領域とネイティブメモリ領域の間で前後に値をコピーする必要があります。
3
見つけるための唯一の現実的な方法は、専用のJavaベンチマークツールを使用して慎重にベンチマークを行うことです - Caliperが頭に浮かぶ - しかし、私は個人的にあなたがJNIのオーバーヘッドを上回るために十分な性能を獲得したいことを疑います。
2
ルイスが述べたように、知る最も良い方法は測定することです。 JNIを呼び出すオーバーヘッドは重要です。あなたのメソッドを頻繁に呼び出すのが良い質問です。言い換えれば、実行時間の96%を消費するために、ビット操作方法は1秒間に何千回も呼び出されるのですか、それとも1回の呼び出しで重要な作業ですか?後者の場合は、ネイティブコードの恩恵を受ける可能性が非常に高いです。
関連する問題
- 1. パンダの日時操作のパフォーマンスを向上させる
- 2. データベースフェッチ操作のパフォーマンスを向上させる
- 3. パフォーマンスを向上させる
- 4. パフォーマンスを向上させる
- 5. apache sparkでフラットマップ操作を回避してパフォーマンスを向上させる方法
- 6. ffmpeg - パフォーマンスを向上させるには?
- 7. ハイチャートチャートの作成とレンダリングのパフォーマンスを向上させるには
- 8. CALayerフィルタのパフォーマンスを向上させる
- 9. JavaScriptコードのパフォーマンスを向上させる
- 10. SQL - ピボットクエリのパフォーマンスを向上させる
- 11. JavaFX WebGLのパフォーマンスを向上させる
- 12. EXCEPTステートメントのパフォーマンスを向上させる
- 13. ウェブサイトのパフォーマンスを向上させる - ASP.NET
- 14. ボックスシャドーのパフォーマンスを向上させる
- 15. ASP.NETアプリケーションのパフォーマンスを向上させる
- 16. C#リストのパフォーマンスを向上させる
- 17. FileSystemWatcherのパフォーマンスを向上させる
- 18. ClojureScriptプログラムのパフォーマンスを向上させる
- 19. Javaパーサーのパフォーマンスを向上させる
- 20. Javaプログラムのパフォーマンスを向上させる
- 21. ウェブサーバーのパフォーマンスを向上させる
- 22. LEFT JOINのパフォーマンスを向上させる
- 23. Kafkaのパフォーマンスを向上させるプロデューサ
- 24. エンティティフレームワークのパフォーマンスを向上させるクエリ
- 25. WebMailのパフォーマンスを向上させるMVC3
- 26. SSLハンドシェイクのパフォーマンスを向上させる
- 27. 検索のパフォーマンスを向上させる
- 28. コードのパフォーマンスを向上させる
- 29. SQLクエリのパフォーマンスを向上させる
- 30. バーコードスキャンのパフォーマンスを向上させる
おそらく。それはまさにほとんどのJVMが非常にうまく処理できるコードの種類です。オブジェクト、配列、または三角関係があった場合、それは完全に別のものになります。 – harold