有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Mobile Codename如何能比本机语言更快?

上下文:

开始为安卓和ios编写移动应用程序

考虑许多替代方案。我无法忍受html5/webview。大多数时候,它是缓慢的。我尝试了很多演示应用(phonegap/steroid…)感觉不自在。不够光滑

更多的是,一些游戏即将到来:所以不可能。我想要一个本地开发

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

问题:

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

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

如果我真的不必使用本机iOS语言(obj-c)编写代码并通过javavm获得更好的结果,一些开发人员甚至创建者是否可以告诉我<我觉得很奇怪


共 (2) 个答案

  1. # 1 楼答案

    您链接到的页面上的引用:

    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,但实际应用程序的性能几乎永远不会被方法调度开销所控制

  2. # 2 楼答案

    我对CodenameOne一无所知,但我了解Java虚拟机的一般行为
    通常,java程序需要更多的启动时间,因为在执行之前必须编译中间java字节码。但是,在执行期间,VM可以自由执行运行时优化,例如重新排列代码块以更好地利用CPU缓存等
    由于虚拟机可以在运行时执行这一步骤,因此具有静态编译器所不具备的知识,因此它有时甚至可以超过优化的C代码
    Jake2 (Quake2 ported to Java)中可以找到一个比较C和Java的真实世界基准测试的老例子