我现在正在编写一个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