9 月 4 日,Mono 3.8.0 发布了。该版本的运行时带来了一些性能和可伸缩性方面的改进,同时完成了向 Windows 平台的移植。
Mono 遵循 Gnome 和 Linux 内核的版本编号策略,这意味着 3.8 是 3.6(已于上个月发布)之后的一个主要的稳定版本。该版本在性能方面有所改进:
- JIT 可以更好地处理除数为 2 的幂的 long 型的取余操作,生成的代码效果好很多。之前 long 型的取余操作不会像 int 类型那样特殊处理。(作为一种编译优化,通常 2 的幂的乘除运算会替换为移位操作。)
- 对于只调用一次的委托,可以生成更快的代码。这对于诸如 async 和 LINQ 等底层使用了委托的 C#特性帮助很大。
- 运行时有了一个新的可以并发读的 hashtable ,有助于提升可伸缩性。
- GC 时间减少了 5-10%。
社区对于 Mono 一个版本接一个版本的持续性能改进非常兴奋。Richard Simpson总结到:
Mono 团队发布的版本真是让人印象深刻。Mono 最让我震动的就是性能了。
该版本在调试方面也有些改进,尤其是 USB 调试。考虑到跨平台移动开发是 Mono 的一个主要使用场景,这一改进很受欢迎。调试有线协议(wire-protocol)现在可以更好地处理高延迟情况。客户端库也会激进地缓存更多信息。这会减少需要转移的包的数量,进而减少调试延迟。在使用 Xamarin 工具进行跨平台移动开发时,这双重变化会带来更好的调试体验。
除此之外,还有很多 Bug 修复,涉及运行时、类库、C#编译器、MSBuild 和调试器,整体上改进了稳定性和性能。发布说明详细列出了所有修改,感兴趣的读者可以参阅。
Mono 3.6 并不支持所有平台,特别是 Windows 和非 Debian 的 Linux 变种。Mono 3.8 则支持更多 Linux 变种。发布说明中提到,向 Windows 64 的移植也已经完成。不过 Mono 网站上尚未提供 Windows 平台的安装程序,我们必须从源代码构建出最新的二进制文件。
Mono 是 Xamarin 资助的一个项目,是微软的.NET 框架的开源实现。它使得使用 C#、F#和其他.NET 语言进行跨平台开发成为可能。Xamarin 在 Mono 之上构建了跨平台开发工具以及像 Xamarin.Forms (可以使用跨平台代码辅助创建原生的体验)这样的框架产品。开发工具和框架在开发者之间都有应用(Xamarin 最近获得了 5400 万美元 C 轮融资,会继续在这方面发力)。Xamarin 也已经在和微软开展合作,以改进.NET 和 Mono 之间的兼容性。ASP.NET vNext(尤其是 KRuntime )就是这一合作的成果之一;它在.NET 和 Mono 运行时上都能很好地运行。
查看英文原文: Mono Gets Further Performance, Scalability Improvements
评论