我現在正在編寫一個JNI版本的舊版本的c/C++代碼,我在今年早些時候編寫了一個包含在我的android應用程序中的代碼。我寫了一個相當於我在Java和C++中編寫的桌面應用程序,性能差異突出,因此我想利用ndk。JNI和舊的C++代碼
我對JNI非常陌生,並且我理解事物的方式,似乎我必須做一些類型映射; jdouble
來代替double
,jint
來代替int
等等。事情是,雖然我試着運行一些我的舊代碼不變,它的工作!我甚至有一些STL庫(list
和vector
),我沒有遇到任何問題。我剛剛在Android.mk文件中包含APP_STL := stlport_static
。
所以我的問題是:在這樣做有性能損失?我應該注意到其他風險嗎?在我的jni中使用C/C++基元類型的缺點是什麼?我可以讓代碼運行得更快,還是我不應該打擾?
感謝,
NAX
嗯,這是令人放心的!非常感謝 – naxchange 2013-03-08 10:16:49
特別是,Java類型具有明確定義的寬度和符號 - 「jint」是一個有符號的32位值,「jlong」是一個有符號的64位值,「jchar」是一個無符號的16位價值等。這些不會因平臺而異。請參閱http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html – fadden 2013-03-09 01:01:19