听说可以用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)
也就是说,有一些性能建议:
- Use a splash screen during app startup.这会在应用启动期间提供即时反馈,这是大多数用户关心的。
- 如果可能,尽量减少 Mono 和 Java 代码之间的转换。 JNI 永远不会赢得任何性能奖牌,因此如果您可以在 Mono 中编写更多代码而无需中间调用 Java 方法,那就这样做吧。
- 尽量减少同时保持 Activity 状态的 Java.Lang.Object 实例的数量。跨 VM GC 引用可能会导致性能问题。
关于c# - monodroid 慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538607/