java - 用 Java 编写的 Android 程序是否比嵌入到 iOS 的 Objective-C 中的 C 编写的程序慢?

标签 java android objective-c c ios

为了确定将现有的 iOS 应用程序(用 C 编写)移植到 Android 是否合理,我必须估计如果用 Java 实现它的速度有多快。一些担忧是 Java 代码必须多次转换(转换为字节码,然后使用 JIT 转换为 native 代码)这一事实。它可能会对实时属性(响应性)产生负面影响,对吧?

生成代码的质量如何?它是否可以与 gcc/llvm 生成的代码相媲美?如果有,您有没有引用比较结果(论文)?

最佳答案

好问题。几年前,与 native 代码相比,Sun(现在是 Oracle)JVM 的性能会相形见绌。但是things have changed .

首先,运行 Android 的 VM 不是您的标准 JVM。它是由 Google 专门为移动使用而重写的增强型 VM,其中 UI 性能是优先考虑的。

其次,在过去的十年中发生了很多事情……引自 this relevant文章说得很好:15 年前,我们认为 Java 需要一个更快的虚拟机来统治已知的宇宙。我们现在有一个更快的虚拟机。

最后,关于 iOS 和 Android 在性能方面的比较有很多文章。 Here's第五个链接只是为了踢。那里还有很多。这归结为几个因素 - 您需要运行什么类型代码,您的性能期望是什么,以及您愿意投入多少资金来获得最大 yield 。如果您认为 Dalvik 是您的瓶颈,那么您可以编写原生 C/C++ 并在 Android 中使用 JNI。

关于java - 用 Java 编写的 Android 程序是否比嵌入到 iOS 的 Objective-C 中的 C 编写的程序慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8010691/

相关文章:

java - Joda-Time 中两个日期之间的天数

java - 在哪里放置外部文件来配置 Eclipse 中的运行?

android - 为什么 viewModel() 在组合中使用,而 viewModels() 在 Activity 或 fragment 中使用?

android获取所有设备的所有外部存储路径

ios - 谷歌地图方案通过纬度和经度给出方向不起作用

java - 线程等待直到文件修改

javax.naming.NameNotFoundException :Name [org. wso2.carbon.custom.ejb-1.0-SNAPSHOT/HelloBean] 未在此上下文中绑定(bind)。无法找到 [ejb:]

android - 我无法更改 android 相机分辨率

使用重复本地通知的 iPhone 闹钟

Objective-C—— undefined symbol