MonoTouch和MonoDroid是否为这两个平台生成相同的ARM6 / 7代码?

时间:2012-10-16 19:00:29

标签: mono xamarin.ios garbage-collection xamarin.android aot

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

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

1 个答案:

答案 0 :(得分:4)

没有。根据您的选项,生成的代码可能类似但它永远不会完全相同。

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

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

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

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