c# - monodroid 慢吗?

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

听说可以用C#开发一个android软件。 (单体机器人)

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

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

最佳答案

我们不知道。

说真的,如果有人可以将 Android Linpack 应用程序移植到 Android 的 Mono 上,那将非常方便,这样我们就可以在两者之间进行性能比较。

这是我确实知道的:

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

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

那么这一切意味着什么呢?我完全不知道。 (同样,将 Linpack 移植到 Android 的 Mono 会很棒!hint hint, nudge nudge)

也就是说,有一些性能建议:

  1. Use a splash screen during app startup.这会在应用启动期间提供即时反馈,这是大多数用户关心的。
  2. 如果可能,尽量减少 Mono 和 Java 代码之间的转换。 JNI 永远不会赢得任何性能奖牌,因此如果您可以在 Mono 中编写更多代码而无需中间调用 Java 方法,那就这样做吧。
  3. 尽量减少同时保持 Activity 状态的 Java.Lang.Object 实例的数量。跨 VM GC 引用可能会导致性能问题。

关于c# - monodroid 慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538607/

相关文章:

c# - 如何使用多个、嵌套、transactionscope?

c# - 使用数据绑定(bind)在线托管 WPF 应用程序

android - ADWORDS 通用应用广告系列 : 'new playstore app not shown in app list'

android - 无法显示 MediaRouteActionProvider 按钮

c#-4.0 - 从XDocument删除所有评论

asp.net-mvc-3 - 在 Razor/MVC3 中显示来自数据库的图像

c# - 程序无法在 Visual Studio 之外运行

C# 在 SQL 中编辑行

Android getSupportedVideoSizes 总是返回 null

c# - 如何在域中以模拟用户身份运行提升的命令