yur*_*iyo 9 java performance java-native-interface unsafe
我正在开发类似于sun.misc.Unsafe的JNI实现,但具有扩展的内存管理.
如何从sun.misc.Unsafe和我开发的库中解释本机方法的调用时间是非常不同的?
一些数字:sun.misc.Unsafe.getInt(地址)需要〜1ns,当我的类似方法需要~10ns
两个实现完全相同,遵循openJDK的源代码,只是通过指针返回变量.在JNI模块中不安全,以与其他模式相同的方式注册.
如何加快JNI通话?是什么让Unsafe对性能如此特别?
谢谢,Yury /
Pet*_*rey 11
如果您在Unsafe类中查找本机方法的源代码,您会发现没有JNI实现.相反,不安全方法被内联为机器代码.getInt(long)例如,成为一个机器代码指令.
因此,您无法编写与使用Unsafe一样快的JNI方法,而无需更改JVM以便内联机器代码.
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |