我正在开发一个多平台游戏引擎,正在使用MonoTouch来覆盖安卓和iPhone。我真的对使用MonoTouch进行iOS和安卓开发的性能方面很感兴趣,有谁知道MonoTouch在使用Java语言或Objective-C进行相关平台的开发时会有什么性能影响?我是从游戏开发者的角度来问这个问题的,所以像绘制代码之类的事情真的让我很担心。据我所见,mono应用程序运行得很好,但是假设你做了一个像愤怒的小鸟(艺术作品,声音,物理处理)级别的游戏,那么在mono上运行得足够好,不会让你比使用平台的本地语言处于明显的劣势吗?
发布于 2011-04-18 23:23:01
首先,澄清一下:在Android上,代码不是由Java运行时执行的,而是由Dalvik执行的(由Google从头开始编写)。因此,Java VM性能与这个问题无关。
记住这一点: Android上的大多数程序不执行本机代码,而是在Dalvik VM (运行转换后的Java字节码)上运行。Mono JIT之前已经与之进行了基准测试,并且一直被发现更快(例如查看http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html )。
在iOS上,MonoTouch必须先将代码预编译成原生应用程序,然后才能将其安装到苹果设备上(因为许可证限制是由操作系统执行的)。也就是说,Objective C编译器和Mono的提前编译都使用相同的LLVM后端来生成和优化二进制代码,因此您将获得的结果应该几乎相同(Mono需要一些内存开销)。
请记住Donald Knuth的一句话:“过早优化是万恶之源。”编写代码时要考虑到性能,但请记住,可维护性更重要。优化应该只在必要的时候进行(因为通常编译器会比你做得更好)。
https://stackoverflow.com/questions/5698352
复制相似问题