Mono:超越标准

  • Jonathan Allen
  • 张龙

2008 年 11 月 9 日

话题:.NET语言 & 开发架构

从 Mono 2.2 开始,Jonathan Pryor 的 Mono.Options 库就与运行时一起发布了。这个库本身并不那么惹人注意。虽然它确实很有用,尤其对于那些编写大量命令行应用的人来说更是如此,但它仅仅只是一个库而已。

然而它具有更深层的意义,Mono 正在超越标准。Mono 不再只是跟屁虫了,它正试图在很多地方超越 CLR。作为一个开源项目,他们开发新库的速度要远远快于微软。他们不必事事亲为,相反可以使用一些成熟的项目,如Mono.Optionscollection library C5,并将他们包含在发布中。

在 12 月 Mono 2.2 的发布中最重要的一个增强就是对 SIMD 的支持。SIMD 是一套 CPU 指令,可以极大地加快向量的操作。通过使用 SIMD,用户就不必按照顺序对数组中的每个元素执行操作,他们可以使用 SIMD 指令处理包含 16 个元素之多的向量。下面列出的就是支持的类型。

  • Mono.Simd.Vector16b——16 个无符号的 byte
  • Mono.Simd.Vector16sb——16 个有符号的 byte
  • Mono.Simd.Vector2d——2 个 double
  • Mono.Simd.Vector2l——2 个有符号 64 位的 long
  • Mono.Simd.Vector2ul——2 个无符号 64 位的 long
  • Mono.Simd.Vector4f——4 个 float
  • Mono.Simd.Vector4i——4 个有符号 32 位的 int
  • Mono.Simd.Vector4ui——4 个无符号 32 位的 int
  • Mono.Simd.Vector8s——8 个有符号 16 位的 short
  • Mono.Simd.Vector8us——8 个无符号 16 位的 short

性能的改进是明显的。执行 Spring-Gravity 算法,一个本地的 C++ 程序运行需要 9.5 秒。比较起来,Mono 却需要 17.7 秒。但将标准的操作符转化为 SIMD 函数,Mono 的运行时间一下子就降到了 1.7 秒。

那么人们使用 Mono 打算做什么呢?为 Windows、XBox 360 及 iPhone 编写游戏。你可以通过PDC 2008 video的第 9 频道了解更多。

查看英文原文:Mono: Going Beyond the Standard

.NET语言 & 开发架构