【问题标题】:MonoTouch performance vs. Objective-C/JavaMonoTouch 性能与 Objective-C/Java
【发布时间】:2011-04-18 03:53:08
【问题描述】:

我正在开发一个多平台游戏引擎,并且正在使用 MonoTouch 来覆盖 Android 和 iPhone。我对使用 MonoTouch 进​​行 iOS 和 Android 开发的性能方面非常感兴趣,有人知道 MonoTouch 对使用 Java 或 Objective-C 开发相关平台的性能有何影响(如果有的话)?我特别从游戏开发者的角度来问这个问题,所以像绘制代码之类的事情真的让我很担心。从我所看到的单声道应用程序运行良好,但假设你制作了一个愤怒的小鸟级别的游戏(艺术作品,声音,物理处理),通过单声道运行是否足够好,你不会被放在重要的位置使用平台的本地语言的劣势?

【问题讨论】:

  • Java 在 Android 上并不完全是“原生”的,上次我检查 Mono 更快,因为它的 JIT 比 Dalvik 更好。
  • Mono 比 Objective C 快吗?我可以接受它比 Java 快(说真的,现在有什么不比 Java 快?:P)但我真的担心 MonoTouch 会比 iOS 上的 Objective C 慢得多......
  • 我相信生产力的提高以及您可以在 Android 和 iPhone 上使用相同的语言(您甚至可以使用 Windows Phone)这一事实将远远超过 MonoTouch 对性能造成的任何影响。
  • 将我的评论扩展为答案。
  • @Jonathan.Peppers 如果应用在 MonoTouch 下运行速度太慢,任何生产力提升都无法抵消

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


【解决方案1】:

首先,澄清一下:在 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 有一些内存开销)。

请记住 Donald Knuth 的一句重要名言:“过早的优化是万恶之源。”编写代码时要考虑性能,但请记住可维护性更重要。仅在必要时才应进行优化(因为通常编译器会比您做得更好)。

【讨论】:

  • 嗯,MonoTouch 和 Objective C 之间似乎仍然没有任何直接的比较...
  • 因为,一般来说没有区别。如果您有特定的性能问题,则必须自己衡量。
  • AFAIK Dalvik VM 的原始版本并非来自 Google。
猜你喜欢
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多