纯C++应用在Android上的性能表现

9

我能否编写一个纯C++的Android应用程序?(例如,使用NDK?)

考虑到功能没有区别,纯Android C++应用程序是否比Android Java应用程序更快、消耗更少的内存?我的猜测是肯定的,因为C++应用程序不会进行垃圾回收,这会导致帧率的卡顿。

3个回答

16

是的,尽管谷歌说:

"使用本地代码不会自动提高性能,但总会增加应用程序的复杂性...... 如果您编写本地代码,则仍会将您的应用程序打包成.apk文件,并且它们仍在设备上的虚拟机内运行。 基本的Android应用程序模型不会改变。"

来自http://developer.android.com/sdk/ndk/index.html

(个人认为,使用C++编程不会比Java更加复杂,甚至可以说对于熟练的C++程序员恰恰相反)


2
只是补充一下,使用 android.app.NativeActivity,甚至有一个内置的可重用活动可以用作您的 C/C++ 代码的包装器(因此您甚至不必纠结于 Java 方面来运行您的应用程序)。 - Mario
理论上是可以的,但实际上你需要在Java或JNI中进行调试,因为你可以从NDK访问的Android库的部分非常有限。Google当然可以雇用一位能够胜任的程序员来封装更多的Android库,以便从NDK中访问,但他们似乎完全不关心这个问题。 - Viktor Sehr

0

有几个原因需要这样做。

其中一个原因是为了最终避免不断遭遇新的破损,因为你被迫从一个破损的工具链“升级”到下一个,当你几乎控制住破损时。


-2

在安卓设备上,你不能使用纯C++编程。

这是没有必要的。因为你仍然在与Java代码运行在同一个虚拟机中。所以,除非你需要挤出那些微小的性能差距,否则你应该选择用C++编写CPU密集型程序,并通过Java代码调用它们。

如果你正在开发游戏,那么就使用Java和OpenGL ES,并将重度计算转移到计算着色器中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接