问题标签 [ryujit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2640 浏览

c# - 如何验证 ryujit 是否在 jitting 我的应用程序?

我已经为 .NET RyuJit 安装了新的 Jit 编译器,并在 regedit 中的 .NetFramework 中设置了 AltJit=* 键,如安装文档中所述。 http://blogs.msdn.com/b/dotnet/archive/2013/09/30/ryujit-the-next-generation-jit-compiler.aspx

那么我如何验证 RyuJit 是否真的被使用了呢?

0 投票
1 回答
8095 浏览

c# - 什么是新的 .Net Native

今天我在MSDN上阅读了一篇关于新的 .Net Native 的文章。

“使用 .NET Native,Windows 应用商店应用的启动速度提高了 60%,并且内存占用少得多。我们的第一个版本是开发人员预览版,允许您使用这个新编译器开发和测试应用程序。.NET Native 的这个预览版提供C++ 的性能和 C# 的生产力”。

当然,这真的很有趣,但是如果 .Net Native 是一个新的编译器,它可以提供良好的性能,那么我们为什么需要使用 RyuJIT。这个新的 .Net Native 是什么?新的 .Net Native 和 RyuJIT 有什么区别,微软也将编译器发布为一项名为 Roslyn 的服务。那么 Roslyn 如何支持这个新的 .Net Native。

0 投票
0 回答
727 浏览

c# - SIMD C# - 测试显示速度没有差异。为什么?

如需参考,请参阅:http ://code.msdn.microsoft.com/windowsdesktop/SIMD-Sample-f2c8c35a

这不是真实世界的测试。我已经安装了 Ryu-JIT,并在运行“enable-JIT.cmd”和运行“disable-JIT.cmd”后运行了以下代码。我已经关闭了“抑制模块加载时的 JIT 优化”。

这些都没有显示出循环速度或它们是否会运行的任何差异。目前,他们都达到了1.1~秒。

0 投票
3 回答
872 浏览

.net - 为什么 .NET 不支持 32 位的 SSE(而 ryujit 64 位可以)而 Mono 同时支持 32 位和 64 位?

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(如果可能)”)

0 投票
3 回答
1904 浏览

.net - 在 Visual Studio 2015 RC 中启用 RyuJIT

安装 Visual Studio 2015 RC1 后,我加载了一个旧的 ASP.NET 项目并将 .NET 版本更改为 4.6。该项目运行良好,但网站仍然像往常一样缓慢加载。我原以为 RyuJIT 会加入,但显然不是。

我看过这个关于 RyuJIT 的线程,我看不到任何 RyuJIT 的痕迹,其中描述的任何方法。

空的控制台项目也会出现同样的问题。我在输出窗口、模块窗口或正在运行的 Windows 任务中看不到 Ryujit。

因此,要么像以前的预览版那样无法检测到 RyuJIT,要么它没有运行。无论哪种方式,我都被困住了。

我如何验证 RyuJIT 是否在 VS 2015 中运行,如果不是,我该怎么做才能使其运行?

0 投票
1 回答
1025 浏览

c# - .NET 4.6 RC x64 的速度是 x86 的两倍(发行版)

Net 4.6 RC x64 的速度是 x86(发布版)的两倍:

考虑这段代码:

在我的机器上,x86 发布版本需要 4.5 秒才能完成,而 x64 需要 9.5 秒。x64 是否需要任何特定的标志/设置?

更新

事实证明,RyuJIT 在这个问题上起了作用。如果useLegacyJit在 app.config 中启用,结果会有所不同,这一次 x64 更快。

更新

现在该问题已报告给 CLR 团队coreclr,issue 993

0 投票
1 回答
237 浏览

.net - 在虚拟内存中哪里可以找到 .Net JIT 编译的 x86 代码

我知道第一次调用函数时,会调用 JIT 并将 .Net IL 代码编译为 x86 指令并将其保存在内存中的某个位置。我需要知道保存此 x86 代码的位置,以便我可以分析 x86 汇编指令(目的在这个问题的上下文中并不重要。)谁能告诉我如何确定存储翻译后的代码,或者可能是 JIT 代码中的哪个函数执行此操作。我有 JIT 代码(因为 .net 源代码已在 GitHub 上发布,但到目前为止我对代码的大小感到不知所措)。我将不胜感激任何形式的帮助。提前致谢...

如果有人可以建议一个反汇编程序,它可以提供正在运行的 .net exe 的 x86 汇编指令转储,这将有所帮助,就像 Visual Studio 反汇编程序一样,但我需要自动运行它。我知道这可以由 ngen 静态完成。ngen 可以转换为 x86 指令,然后任何反汇编程序都可以获得转储,但对我来说很重要的是,这必须在 exe 运行后完成。

这是因为我需要 x86 指令转储的原因是为了找到多个 .net exe 之间的相似性。直接查看静态拆卸程序集的挑战在于它可能被打包或混淆,在这种情况下,即使它们内部相似,它们也可能看起来不同。但在运行时,它们将被打包程序解包/去混淆,JIT 编译的 x86 指令看起来很相似。

0 投票
1 回答
1335 浏览

.net - 我是否需要将我的应用程序定位到 .NET 4.6 才能利用 RyuJIT?

从宣布 .NET Framework 4.6中读取,似乎暗示 RyuJIT 仅适用于 .NET 4.6。

这是否意味着我需要将我的应用程序重新定位到 .NET 4.6 才能使 RyuJIT 生效?

0 投票
1 回答
2633 浏览

c# - RyuJit 产生不正确的结果

在最近升级到 .net 4.6 后,我们发现了 RyuJit 产生错误结果的错误,我们现在可以通过在 app.config 中添加 useLegacyJit enabled="true" 来解决这个问题。

如何调试以下生成的机器代码?

我在 VS 2015 RTM 中创建了一个新的控制台项目,设置为 Release,Any CPU,未选中 Prefer 32 bit,在连接和不连接调试器的情况下运行会产生相同的结果。

它应该产生: False False

但相反它会产生:真假

该示例的关键部分是

它应该总是返回 false,但从输出中可以看出,它在第一次运行该方法时返回 True,而在第二次运行该方法时返回不同的答案。从 Calculate() 方法中删除更多行将导致它始终返回 True,但给出的示例是我可以重现的最接近我们实际生产场景的示例。

0 投票
1 回答
2980 浏览

c# - 在 .NET Framework 4.6 中使用 C# 的 SIMD 操作速度较慢

我目前正在尝试仅使用 C# 计算一个巨大数组中所有值的总和,并使用 SIMD 来比较性能,而 SIMD 版本要慢得多。请查看下面的代码片段,如果我遗漏了什么,请告诉我。“vals”是从图像文件中读取的巨大数组,并省略了该部分以保持精简。

和 GetSIMDVectors 方法