MonoTouch性能与Objective-C / Java相比

时间:2011-04-18 03:53:08

标签: java iphone objective-c mono xamarin.ios

我正在开发一个多平台游戏引擎,我正在使用MonoTouch来覆盖Android和iPhone。我真的对使用MonoTouch进行iOS和Android开发的性能方面感兴趣,有没有人知道MonoTouch对其相关平台使用Java或Objective-C开发的性能影响(如果有的话)?我从游戏开发者的角度来看这个具体的问题,所以绘制代码之类的东西真让我担心。从我所看到的单声道应用程序运行良好,但你说你在愤怒的小鸟(艺术作品,声音,物理处理)的水平上做了一个游戏,通过单声道运行得足够好,你不会放在显着使用平台的本地语言的缺点是什么?

1 个答案:

答案 0 :(得分:21)

首先,澄清一下:在Android上,代码不是由Java运行时执行,而是由Dalvik执行(由Google从头开始编写)。因此,Java VM性能与此问题无关。

考虑到这一点:Android上的大多数程序都不执行本机代码,而是在Dalvik VM(运行已翻译的Java字节码)上运行。 Mono JIT之前已经对其进行了基准测试,并且一直被发现更快(例如检查http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html)。

在iOS上,MonoTouch必须先将代码预编译到本机应用程序中,然后才能将其安装在Apple设备上(由于操作系统强制执行的许可限制)。也就是说, Objective C 编译器和Mono的 Ahead Of Time Compilation 使用相同的 LLVM 后端来生成和优化二进制代码,因此结果你会得到几乎相同的(Mono的一些内存开销)。

请记住唐纳德克努特的一句重要话:“过早优化是万恶之源。”编写代码时请考虑性能,但请记住可维护性更重要。只有在必要时才应进行优化(因为编译器通常会做得比你做得好得多)。