【发布时间】:2015-03-21 17:50:25
【问题描述】:
Ryujit 将支持 SSE 指令,但 Ryujit 仅适用于 64 位。
由于公司政策和预算(由于测试成本),大多数客户坚持使用 Windows 32 位操作系统。
我的理解是 Ryujit 是新的“针对 64 位优化的 JIT 方案”。
但是,如您所知,SSE 指令集在 32 位和 64 位上退出。
Mono.Simd 适用于 x86 或 Arm 32 位处理器。
(Java SIMD 调用似乎适用于 x86 和 64 位)。
我们的项目是针对任何 CPU 的,所以我很难告诉客户“请使用 Mono,因为他们有 SSE 支持,或者更换 CPU 和操作系统。”
为什么 MS .NET Framework for x86 不提供 SSE 命令支持而 Ryujit 可以?
(我不是 CPU 专家,但我希望 .NET 可以选择“在此命令上强制 SSE(如果可能)”)
【问题讨论】:
-
这很简单,旧的 JIT 是旧的和遗留的...... Mono 和 RyuJIT 是新的并且支持更多。
-
许多移动笔记本电脑仍配备 32 位操作系统和 32 位 .net(包括我的)。 “Legacy”一词应该用于旧产品,例如“IE6”、“Clipart”或“Vista”。我认为微软在未来 20 年内不会放弃 32 位操作系统版本。
-
“丢弃”和“维护”是有区别的。他们正在维护 32 位编译器,而不是为它进行新的开发。就像他们发布 Windows 7 时,他们仍然“支持”了一段时间的 XP,但他们并没有为其开发新功能。如今,大多数移动设备都有 64 位 CPU,而且可能不久之后 MS 就会正式宣布 32 位已死(最多可能再过 2 或 3 年)。
-
Mono simd 只是一些内在函数,它的恕我直言很差,还有 JIT。在理想主义应用程序中对其进行基准测试,例如泛型/接口并进行比较。它是一个很棒的库,平均运行时间和 Java 相比还有很长的路要走。 32 位 CLR 上的 1.3 gig 内存对于体面的应用程序来说是一个严重的问题。