Mobile - Codename - 怎么比母语快?

Mobile - Codename - How can it be faster than native language?

上下文:

开始为 android 和 ios 编写移动应用程序。

寻找许多替代方案。受不了html5/webview这件事。大多数时候它是缓慢的。我尝试了许多演示应用程序 (phonegap/steroid..),但感觉不自在。不够流畅

更多,一些游戏即将推出:所以没办法。我想要 NATIVE 开发。

本身,objective-c不是问题所在。但是,如果我只用一次开发就可以创建应用程序,使用一种易于编码的语言 (java),那听起来不错。

问题:

CodenameOne claims greater performance than objective-c via their java vm.

也许他们正在使用 C api,但是这个 api 现在主要是 obj-c。

一些开发人员甚至创作者可以告诉我我是否真的不需要使用原生 iOS 语言 (obj-c) 进行编码并通过 java 虚拟机获得更好的结果? 我觉得很奇怪。

来自您链接到的页面的引用:

A small disclaimer is that the Objective-C benchmark is a bit heavy on the method/message calls which biases the benchmark in our favor. Method invocations in Codename One are naturally much faster than the equivalent Objective-C code due to the semantics of that language.

这还不能准确解释您的问题吗? Objective-C 的架构无法优化动态调度,而 Java 的架构允许诸如单态调用站点甚至完整方法内联之类的事情。专注于该方面的基准测试会使结果偏向 JVM,但实际应用程序的性能几乎从不被方法分派开销所支配。

我对 CodenameOne 一无所知,但对 Java-VM 的一般行为一无所知。
通常 java 程序需要更多时间来启动,因为在执行之前必须编译中间 java 字节代码。然而,在执行期间,VM 可以自由地执行运行时优化,例如重新排列代码块以更好地利用 CPU 缓存等...
由于 VM 可以在运行时执行此步骤,因此拥有静态编译器所不具备的知识,它实际上有时甚至可以超过优化的 C 代码。
Jake2 (Quake2 ported to Java).

中可以找到比较 C 和 Java 的现实世界基准测试的较旧示例