Mono 3.2.7 发布,JIT 和 GC 进一步改进

  • Roopesh Shenoy
  • 臧秀涛

2014 年 3 月 3 日

话题:开源语言 & 开发

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

开源语言 & 开发