通过Mono运行.NET应用程序和通过WINE上的.NET框架运行它们之间是否存在性能差异?

我一直使用WINE和.NET很久来运行.NET应用程序,但最近我发现了一个跨平台的、开源的.NET框架版本——Mono。
我在想:因为Mono是本地的,而WINE是一种“模拟器”,是否意味着Mono在运行.NET应用程序方面更快或更好?

Wine不是一个模拟器。它在Linux下原生实现了Windows API函数,通常比在Windows上运行更快。因此,我期望性能非常相似,但当然,具体效果可能会因底层系统和运行时引擎的实现而有所不同。 - Floyd
是的,Mono相对来说更快。但是如果不重新构建,你无法在Mono上运行.NET应用程序。 - Tachyons
1@Tachyons - 实际上,.net程序集在mono上运行时不需要重新编译,程序集格式是一个开放标准。 - trampster
我已经从事.NET开发很长时间了,从2013年开始,由于托管费用较低的原因,我需要将许多项目迁移到mono平台上。我发现最好的方法是坚持使用标准库,在Windows中使用Visual Studio IDE进行开发,并在Linux上部署可执行文件、dll文件和依赖项。一旦部署完成,请尽可能运行多个测试,以确保它在两个平台上都可以正常工作。99%的情况下,这种方法在.NET 4上完全可行,但我发现在某些复杂项目上会遇到一些问题,特别是那些大量使用反射的项目。你问关于性能?Linux无疑是首选。 - mau
1个回答

查看此基准
Mono有时比.NET运行得更快,甚至比本地编译的代码还要快。然而,Mono可能不包含所有.NET平台库的功能。自版本5开始,它似乎包含了所有C#的特性。

看起来这篇论文是2006年的,我认为这意味着它在今天已经没有多少相关性了。这个讨论也不是最新的(来自2010年),但至少包含了一些相关信息。 - bluenote10