3

MonoTouch 和 MonoDroid 是否使用相同的 C#-to-native 编译器和 GC,从而提供相同的性能?与 Mono 用于在 Windows 上生成AOT 编译程序集的编译器相同吗?

如果我编写一个完全独立于平台的功能,比如 JPEG 解码器,它会为两个平台生成相同的 ARM6/7 代码吗?

4

1 回答 1

4

不会。根据您的选择,生成的代码可能相似,但绝不会完全相同。

iOS 模拟器上的 MonoTouch 使用 Mono JIT (x86)。

iOS 设备上的 MonoTouch 使用 AOT 编译器,默认情况下它是来自 Mono 的编译器。您可以选择使用 LLVM 支持的 AOT 编译器。那将是 ARMv6、ARMv7 和/或(很快)ARMv7s。

MonoTouch 默认的 GC 是 Boehm。您可以选择使用sgen,作为进一步的选项,您可以使用newrefcount * 选项。

Mono for Android 在模拟器和设备上都使用 JIT(并非所有设备都是基于 ARM 的,即使大多数设备都是)。它还默认使用sgen垃圾收集器(实际上它不能使用 Boehm 收集器,因为它需要与 Java GC 共存)。

于 2012-10-16T19:47:55.493 回答