Mono 3.2.7 已经发布,带来了很多新特性,如改进的 JIT、新的面向 LINQ 的解释器以及使用了 64 位原生指令等等。
这是一次主要特性发布,累积了大约 5 个月的开发工作。看上去大部分改进都是底层的性能改进、优化以及更好的兼容性。以下是一些值得重点强调的特性:
- 对 ARM 上的 HardFP ABI(Application Binary Interface,应用程序二进制接口)提供了初步支持。这就使得 Mono 可以应用于更新的 Linux 版本上,同时可以针对这些目标平台生成更好的代码。要进一步了解,可以阅读 HardFP 与 SoftFP 的区别。
- 现在 ABCREM( array bound checks removal )优化在 64 位系统上的表现改进了很多。
- 两类新的优化,移动循环不变式( Loop Invariant Code Motion )和别名分析( Alias Analysis )。在某些函数中可以带来 20% 的性能收益。
- 64 位 CAS 指令在 32 位系统上得到支持,极大地改进了 PLINQ 负载在多核平台上的表现。
- 使用了更新的 LLVM 版本,现在可以生成快速 TLS(Thread Local Storage,线程本地存储)存取
- GC 相关的微型优化——优化了内部数据结构,使用 intrinsics 来加速核心循环。
- 可供 FullAOT 运行时使用的一个面向 LINQ 的解释器以及动态语句。
- 通过 task awaiters 对定制任务调度器提供了更好的支持。
- C#编译器中的可达性和流分析有了很大的改进,可以生成更好的警告信息。
该版本还包含了一些 bug 修复。改进的完整列表请参看发布说明。
查看英文原文: Mono JIT, GC Get Better
评论