我有一個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. 路徑操作解決方案?
- 5. LVM上的解決方案性能
- 6. Android:BitmapFactory.decodeStream OutOfMemoryException - 是SoftReference的解決方案嗎?
- 7. 是遞歸的解決方案嗎? - Python
- 8. BizTalk是正確的解決方案嗎?
- 9. 是值得的SSMS解決方案嗎?
- 10. 需要邏輯和性能增強解決方案
- 11. 操作PTVS中的解決方案屬性
- 12. 「不能在查詢中執行DML操作」的解決方案?
- 13. c中的高性能位圖繪製解決方案#
- 14. 解決方案克隆性能提示
- 15. 位圖繪製太慢 - 是openGL的解決方案嗎?
- 16. 多處理會是這個操作的一個很好的解決方案嗎?
- 17. 什麼是可能的解決方案
- 18. https://bintray.com是付費解決方案嗎?
- 19. Team System是一個解決方案嗎?
- 20. 左連接是解決方案嗎?
- 21. 是核心數據解決方案嗎?
- 22. 多種解決方案可以加速Dijkstra的性能下降嗎?
- 23. 我的緩存解決方案解決方案是否安全?
- 24. 智能解決方案
- 25. Javascript多增量可變解決方案
- 26. Visual Studio:單一解決方案還是很多解決方案?
- 27. 這個奇怪的32位/ 64位互操作解決方案是如何工作的?
- 28. GetCustomAttributes性能問題(表達式樹是解決方案??)
- 29. GPU性能請求,什麼是最佳解決方案?
- 30. 糟糕的序列化性能的可能解決方案
可能。這正是大多數JVM可以很好處理的那種代碼。如果涉及到對象,數組或觸發器,那完全是另一回事。 – harold 2012-02-21 18:36:40