我有一个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