monodroid是慢吗?

时间:2011-09-24 11:02:39

标签: c# android c#-4.0 xamarin.android

我听说可以使用C#开发一个android软件。 (MonoDroid的)

但是当我研究它时,有人表示它会更慢。

你怎么看?这是真的吗?使用C#是否有效?

1 个答案:

答案 0 :(得分:18)

我们不知道。

严肃地说,如果有人可以将Android Linpack应用程序移植到Mono for Android,那么我们可以在两者之间进行性能比较,这将非常方便。

以下是我知道的事情:

  • 当首次在G1上加载应用程序时,目前有大约3秒的启动惩罚开销(您的里程数会因硬件而异)。这是因为初始化Mono运行时并加载引用的程序集。我们确实希望将来能够改进这一点。
  • Mono和Mono for Android,JITs 所有。与此同时,Dalvik有一个JIT cache可变大小(目前在ARMv7上为1MB)和一个解释器,所以根据你的应用程序,可能(很可能)不是所有东西都会被JIT。
  • Mono for Android使用JNI调用Android / Java代码。

然后是koush's performance comparsion between Mono and Dalvik in 2009。这比Dalvik JIT早,但在相同的硬件上,Mono是打屁股 Dalvik。

那么这意味着什么呢?我完全不知道。 (同样,Linpack到Mono for Android的端口会非常棒!提示提示,轻推nudge

也就是说,有一些表现建议可以提出建议:

  1. Use a splash screen during app startup.这可以在应用启动期间提供即时反馈,这是大多数用户关心的。
  2. 如果可能的话,最小化Mono和Java代码之间的转换。 JNI永远不会赢得任何性能奖章,所以如果你可以在没有中间调用Java方法的情况下在Mono中做更多代码,那就这样做。
  3. 最小化同时保持活动的Java.Lang.Object实例的数量。跨VM GC引用可能会导致性能问题。