java jni 性能_jni的几个基本的性能测试分析

本文对不同JDK版本下Java调用JNI空方法进行了性能测试,结果显示JDK版本越高,JNI性能提升越明显。在JDK1.6中,JNI空方法调用速度约为Java内部调用的五分之一。此外,测试还探讨了缓存Class和FieldID对JNI字段读取性能的影响,以及JNIEnv的获取方式对性能的差异。结论指出,使用线程变量获取JNIEnv在性能上优于JavaVM.GetEnv。
摘要由CSDN通过智能技术生成

jni的几个基本的性能测试分析

今天对jvm运行jni做了几个基本的性能测试,测试的jvm有jdk1.4.2_19、jdk1.5.0_04和jdk1.6.0_14,测试的重复次数都是一亿次,测试结果的绝对数值意义不大,仅供参考。

java调用jni空函数和调用java方法的性能(比较):

java.version = 1.6.0_14

Java空方法调用  耗时 329 ms   平均每秒  303951367

JNI空方法调用   耗时 1531 ms  平均每秒  65316786

java.version = 1.5.0_04

java空方法调用  耗时 312 ms   平均每秒  320512820

JNI空方法调用   耗时 1891 ms  平均每秒  52882072

java.version = 1.4.2_19

java空方法调用  耗时 312 ms   平均每秒  320512820

JNI空方法调用   耗时 3672 ms  平均每秒  27233115

jdk版本越高,JNI调用的性能越好,这点要感谢sun的努力了。

在jdk1.6下,仅仅是空方法调用,JNI的性能就要比java内部调用慢将近5倍,而在jdk1.4下更是慢了十多倍。

jni里查找class(JNIEnv.FindClass)和fieldid(JNIEnv.GetFieldID)和jni读取java Field(JNIEnv.GetFieldValue)的性能:

缓存表示只调用一次,不缓存就是每次都调用。

java.version = 1.6.0_14

JNI 字段读取 (缓存Class=false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值