【问题标题】:can not android ndk result in a better performanceandroid ndk 不能带来更好的性能
【发布时间】:2014-05-06 04:16:08
【问题描述】:

在某些计算机逻辑中,我认为本地 c 代码(从 java 本地方法调用)会比 java 运行得快。那么在这种情况下,我似乎必须使用ndk。

但是谷歌说:

值得注意的是,在 Android 上使用本机代码通常不会导致 显着的性能改进,但它总是增加你的应用程序 复杂性

所以我很困惑。 ndk有必要吗?

【问题讨论】:

  • 有人反对这篇文章,你能告诉我为什么吗?

标签: android android-ndk


【解决方案1】:

NDK 是必需的。这是否与您的案件有关很难说,因为您没有提供具体细节。

与服务器端 Java 不同,C 代码实际上比其 DVM 代码要快得多。另一方面,正如文档指出的那样,通常不是。跨越原生边界需要大量时间。调用 NDK 方法的循环很可能不会发生重大变化。完全在 NDK 的 C 端实现的循环可能会发生重大变化。

另请注意,如果您选择使用 NDK,则会大大限制您支持的设备。您可以生成具有多个版本的库的胖二进制文件,每个支持的设备一个版本。当然,这会影响您的应用程序的大小,并且不能保证它可以在某些新手机上运行。

【讨论】:

  • 感谢您的回复。事实上,我们正在构建一个像google app 这样的安卓应用程序,同时我们拥有自己的基于 arcgis 的地理数据。如果可能,我们计划实施 3d 功能。那么在这种情况下你觉得ndk有必要吗?
  • GIS 似乎是 NDK 使用的经典案例。 ARCGIS 的 Java 版本至少有一次在很大程度上是用 JNI 实现的,而且非常糟糕。如果您只需要 3d,那么 OpenGL 和 SurfaceView 可能就足够了。猜测您将需要更多...
猜你喜欢
  • 2013-09-27
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
相关资源
最近更新 更多