锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
榪欎釜綾誨簱鍜岃緟鍔╁伐鍏烽櫎浜嗘敮鎸佸璞″寲璁塊棶澶栵紝榪樺彲浠ュ甫鏉ョ殑鏂逛究鏈夛細
鍘熸潵闇瑕佹墜宸ュ啓鍏ヤ唬鐮佷腑鐨勫ぇ閲忕殑classname/membername鍜宼ype sig鍙互鑷姩鐢熸垚
鍘熸潵緇忓父闇瑕佹鏌ava exception錛屽彲浠ュ埄鐢–++鐨則ry/catch妯″紡鍋欵xception澶勭悊
鍘熸潵鎵嬪伐javah鐢熸垚include鏂囦歡鐨勬柟娉曞彲浠ラ氳繃杈呭姪宸ュ叿鑷姩鐢熸垚鍜宩ava class瀵瑰簲鐨凜++ 綾誨嚱鏁板畾涔夛紝寮鍙戣呭彧闇瑕佸疄鐜拌繖涓嚱鏁板嵆鍙?br />
鎻愪緵涓浜涜緟鍔╁嚱鏁般佸畯瀹氫箟鍜屾ā鏉夸嬌寰楀紑鍙慗NI鏇村姞鏂逛究銆備緥濡俛nsi/unicode/jstring瀛楃涓茶漿鎹€丆++鐗堟湰鐨凷tringBuilder銆佸閮ㄥ姩鎬佸姞杞絡vm絳夈?br />
鍦╣nu鐨刧cj閲岄噰鐢ㄧ殑灝辨槸綾諱技鐨勬ā寮忋傛垜鐪嬪埌鐨剆un鐨刯dk婧愪唬鐮侀噷涔熸櫘閬嶉噰鐢ㄤ簡榪欑妯″紡錛屼篃璁稿皢鏉un浼氬彂甯冧竴涓狫NI鐨凜++鐗堟湰銆?
]]>
浠婂ぉ瀵筳vm榪愯jni鍋氫簡鍑犱釜鍩烘湰鐨勬ц兘嫻嬭瘯錛屾祴璇曠殑jvm鏈塲dk1.4.2_19銆乯dk1.5.0_04鍜宩dk1.6.0_14錛屾祴璇曠殑閲嶅嬈℃暟閮芥槸涓浜挎錛屾祴璇曠粨鏋滅殑緇濆鏁板兼剰涔変笉澶э紝浠呬緵鍙傝冦?br />
java璋冪敤jni絀哄嚱鏁板拰璋冪敤java鏂規硶鐨勬ц兘(姣旇緝)錛?br />
java.version = 1.6.0_14
Java絀烘柟娉曡皟鐢?nbsp; 鑰楁椂 329 ms 騫沖潎姣忕 303951367
JNI絀烘柟娉曡皟鐢?nbsp; 鑰楁椂 1531 ms 騫沖潎姣忕 65316786
java.version = 1.5.0_04
java絀烘柟娉曡皟鐢?nbsp; 鑰楁椂 312 ms 騫沖潎姣忕 320512820
JNI絀烘柟娉曡皟鐢?nbsp; 鑰楁椂 1891 ms 騫沖潎姣忕 52882072
java.version = 1.4.2_19
java絀烘柟娉曡皟鐢?nbsp; 鑰楁椂 312 ms 騫沖潎姣忕 320512820
JNI絀烘柟娉曡皟鐢?nbsp; 鑰楁椂 3672 ms 騫沖潎姣忕 27233115
jdk鐗堟湰瓚婇珮錛孞NI璋冪敤鐨勬ц兘瓚婂ソ錛岃繖鐐硅鎰熻阿sun鐨勫姫鍔涗簡銆?br />
鍦╦dk1.6涓嬶紝浠呬粎鏄┖鏂規硶璋冪敤錛孞NI鐨勬ц兘灝辮姣攋ava鍐呴儴璋冪敤鎱㈠皢榪?鍊嶏紝鑰屽湪jdk1.4涓嬫洿鏄參浜嗗崄澶氬嶃?/p>
jni閲屾煡鎵綾lass(JNIEnv.FindClass)鍜宖ieldid(JNIEnv.GetFieldID)鍜宩ni璇誨彇java Field(JNIEnv.GetFieldValue)鐨勬ц兘錛?br /> 緙撳瓨琛ㄧず鍙皟鐢ㄤ竴嬈★紝涓嶇紦瀛樺氨鏄瘡嬈¢兘璋冪敤銆?/p>
java.version = 1.6.0_14
JNI 瀛楁璇誨彇 (緙撳瓨Class=false ,緙撳瓨瀛楁ID=false) 鑰楁椂 : 79172 ms 騫沖潎姣忕 : 1263072
JNI 瀛楁璇誨彇 (緙撳瓨Class=true ,緙撳瓨瀛楁ID=false) 鑰楁椂 : 25015 ms 騫沖潎姣忕 : 3997601
JNI 瀛楁璇誨彇 (緙撳瓨Class=false ,緙撳瓨瀛楁ID=true) 鑰楁椂 : 50765 ms 騫沖潎姣忕 : 1969861
JNI 瀛楁璇誨彇 (緙撳瓨Class=true ,緙撳瓨瀛楁ID=true) 鑰楁椂 : 2125 ms 騫沖潎姣忕 : 47058823
java.version = 1.5.0_04
JNI 瀛楁璇誨彇 (緙撳瓨Class=false ,緙撳瓨瀛楁ID=false) 鑰楁椂 : 87109 ms 騫沖潎姣忕 : 1147987
JNI 瀛楁璇誨彇 (緙撳瓨Class=true ,緙撳瓨瀛楁ID=false) 鑰楁椂 : 32031 ms 騫沖潎姣忕 : 3121975
JNI 瀛楁璇誨彇 (緙撳瓨Class=false ,緙撳瓨瀛楁ID=true) 鑰楁椂 : 51657 ms 騫沖潎姣忕 : 1935846
JNI 瀛楁璇誨彇 (緙撳瓨Class=true ,緙撳瓨瀛楁ID=true) 鑰楁椂 : 2187 ms 騫沖潎姣忕 : 45724737
java.version = 1.4.2_19
JNI 瀛楁璇誨彇 (緙撳瓨Class=false ,緙撳瓨瀛楁ID=false) 鑰楁椂 : 97500 ms 騫沖潎姣忕 : 1025641
JNI 瀛楁璇誨彇 (緙撳瓨Class=true ,緙撳瓨瀛楁ID=false) 鑰楁椂 : 38110 ms 騫沖潎姣忕 : 2623983
JNI 瀛楁璇誨彇 (緙撳瓨Class=false ,緙撳瓨瀛楁ID=true) 鑰楁椂 : 55204 ms 騫沖潎姣忕 : 1811462
JNI 瀛楁璇誨彇 (緙撳瓨Class=true ,緙撳瓨瀛楁ID=true) 鑰楁椂 : 4187 ms 騫沖潎姣忕 : 23883448
鏌ユ壘class鍜孖D(field鍜宮ethod)娑堣楀ぇ閲忕殑鏃墮棿銆傚彧鏄鍙栧瓧孌靛肩殑鏃墮棿鍩烘湰涓婅窡涓婇潰鐨凧NI絀烘柟娉曟槸涓涓暟閲忕駭銆?br />
鑰屽鏋滄瘡嬈¢兘鏍規嵁鍚嶇О鏌ユ壘class鍜宖ield鐨勮瘽錛屾ц兘瑕佷笅闄嶉珮杈?0鍊嶃?br />
璇誨彇涓涓瓧孌靛肩殑鎬ц兘鍦ㄧ櫨涓囩駭涓婏紝鍦ㄤ氦浜掗綣佺殑JNI搴旂敤涓槸涓嶈兘蹇嶅彈鐨勩?
娑堣楁椂闂存渶澶氱殑灝辨槸鏌ユ壘class,鍥犳鍦∟ative閲屼繚瀛榗lass鍜宮ember id鏄繀瑕佺殑銆?br />
class鍜宮ember id鍦ㄤ竴瀹氳寖鍥村唴鏄ǔ瀹氱殑錛屼絾鍦ㄥ姩鎬佸姞杞界殑class loader涓嬶紝淇濆瓨鍏ㄥ眬鐨刢lass瑕佷箞鍙兘澶辨晥錛岃涔堝彲鑳介犳垚鏃犳硶鍗歌澆classloader,
鍦ㄨ濡侽SGI妗嗘灦涓嬬殑JNI搴旂敤榪樿鐗瑰埆娉ㄦ剰榪欐柟闈㈢殑闂銆?/p>
鍦ㄨ鍙栧瓧孌靛煎拰鏌ユ壘FieldID涓婏紝jdk1.4鍜?.5銆?.6鐨勫樊璺濇槸闈炲父鏄庢樉鐨勩備絾鍦ㄦ渶鑰楁椂鐨勬煡鎵綾lass涓婏紝涓変釜鐗堟湰娌℃湁鏄庢樉宸窛銆?/p>
鍩轟簬綰跨▼鍙橀噺(TlsSetValue/TlsGetValue)鐨凧NIEnv璇誨彇鍜屽熀浜嶫avaVM鐨凧NIEnv璇誨彇(JavaVM.GetEnv)
JNIEnv璇誨彇 (綰跨▼鍙橀噺) 鑰楁椂 : 516 ms 騫沖潎姣忕 : 193798449
java.version = 1.6.0_14
JNIEnv璇誨彇 (JavaVM) 鑰楁椂 : 1985 ms 騫沖潎姣忕 : 50377833
java.version = 1.5.0_04
JNIEnv璇誨彇 (JavaVM) 鑰楁椂 : 2218 ms 騫沖潎姣忕 : 45085662
java.version = 1.4.2_19
JNIEnv璇誨彇 (JavaVM) 鑰楁椂 : 2234 ms 騫沖潎姣忕 : 44762757
涓轟粈涔堣鍋氳繖涓狫NIEnv璇誨彇嫻嬭瘯錛?br />
JavaVM鏄繘紼嬪叏灞鏈夋晥鐨勶紝鑰孞NIEnv鏄嚎紼嬬浉鍏崇殑錛?br />
浣咼NI緙栫▼鏄彲浠ヤ笉鐢ㄨ繖鏍風殑妯″紡鏉ヨ幏寰桱NIEnv鐨勶紝闇瑕佸湪鎵鏈夌浉鍏崇殑鍑芥暟璋冪敤閲屽甫JNIEnv鍙傛暟銆?br />
鍦–++緙栫▼妯″紡涓嬶紝澶ч噺鐨勫璞℃柟娉曡皟鐢ㄩ兘瑕佸甫JNIEnv鐨勫弬鏁扮‘瀹炰笉濡傚姩鎬佽幏寰楀畠鏂逛究銆?br />
鍦ㄦц兘鍙互鎺ュ彈鐨勮寖鍥村唴鏄彲浠ヨ冭檻鐢ㄥ叾浠栫殑妯″紡鏉ラ殢鏃惰幏寰桱NIEnv鐨勩傚洜姝ゆ垜鎵嶄細鍋氳繖涓祴璇曘?/p>
浠庝笂闈㈢殑嫻嬭瘯鏁版嵁鐪嬶紝鐢ㄧ嚎紼嬪彉閲忕殑鎬ц兘鏄紭浜嶫avaVM.GetEnv鐨勶紝鑰屼笖浠庣浉瀵圭殑鏁伴噺綰т笂鐪嬶紝涓漢璁や負鏄畬鍏ㄥ彲浠ユ帴鍙楄繖縐岼NIEnv鐨勮幏寰楁ā寮忕殑銆?/p>
甯屾湜浠ヤ笂鐨勬祴璇曞垎鏋愬澶у鐨凧NI搴旂敤寮鍙戝拰浼樺寲鏈変竴瀹氱殑鍙傝冧環鍊箋?/p>