我有一個java類,確實重位解碼和操縱。這個班級幾乎佔我應用程序總執行時間的96%。我想知道如果我爲這些位操作編寫一些c代碼並使用java本機方法來加載c庫,我的性能是否會顯着提高?JNI是增加位操作性能的解決方案嗎?
2
A
回答
1
我可以看到JNI /本機代碼更快的唯一方法是您可以通過將大數據集傳遞給本地方法來進行位操作來克服JNI調用開銷。請注意,與Java方法不同,JNI方法不能通過熱點內聯/優化。本地調用需要在Java和本機內存區域之間來回複製值。
3
唯一真正的方法是使用專用的Java基準測試工具 - Caliper想到 - 但我個人懷疑你會贏得足夠的性能超過JNI開銷。
2
正如路易斯所說,知道的最好方法就是衡量。通過JNI調用的開銷很大。要問的更好的問題是如果你經常調用你的方法。換句話說,要消耗96%的執行時間,您的位操作方法是否每秒被調用數千次,或者是否在單次調用中執行重要工作?如果是後者,那麼很可能您將從本機代碼中受益。
相關問題
- 1. 性能的解決方案
- 2. 操作系統:Peterson的解決方案
- 3. 路徑操作解決方案?
- 4. Android:BitmapFactory.decodeStream OutOfMemoryException - 是SoftReference的解決方案嗎?
- 5. 是遞歸的解決方案嗎? - Python
- 6. 是值得的SSMS解決方案嗎?
- 7. 「不能在查詢中執行DML操作」的解決方案?
- 8. 位圖繪製太慢 - 是openGL的解決方案嗎?
- 9. https://bintray.com是付費解決方案嗎?
- 10. 左連接是解決方案嗎?
- 11. 多種解決方案可以加速Dijkstra的性能下降嗎?
- 12. 我的緩存解決方案解決方案是否安全?
- 13. Visual Studio:單一解決方案還是很多解決方案?
- 14. 這個奇怪的32位/ 64位互操作解決方案是如何工作的?
- 15. GPU性能請求,什麼是最佳解決方案?
- 16. 糟糕的序列化性能的可能解決方案
- 17. CSS的問題和解決方案,以增加一個div
- 18. Can Octave:解決線性系統有很多解決方案還是沒有解決方案?
- 19. Apache ServiceMix是一個可能的解決方案嗎?速度夠快嗎?
- 20. 在Rails上有翻譯度量單位的解決方案嗎?
- 21. iOS:64位的Core Animation問題還有解決方案嗎?
- 22. iframes不可能是解決方法嗎?
- 23. C++ JNI互操作性
- 24. 通過WebDAV腳本文件操作的推薦解決方案?
- 25. 核心Python中圖像操作的解決方案
- 26. .NET泛型中重載操作符約束的解決方案
- 27. 非法跨線程操作異常的任何解決方案?
- 28. 混合32/64位解決方案
- 29. 8女王的可能解決方案。
- 30. 可能的模板解決方案
可能。這正是大多數JVM可以很好處理的那種代碼。如果涉及到對象,數組或觸發器,那完全是另一回事。 – harold 2012-02-21 18:36:40