问题标签 [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.
c# - 我在哪里可以获得有关 RyuJIT 编译器更改的信息?
我有一些用 C# 编写的数学函数和使用 BenchmarkDotNet 的相关性能基准。
今天我安装了 Visual Studio 15.2,根据 BenchmarkDotNet 的输出 (a) 一些数学运算现在比以前快得多(例如 exp 和 tanh 似乎快了好几倍) (b) RyuJIT 版本从 v4 更改。 6.1648.0 到 v4.7.2098.0。
我想了解导致这些性能提升的哪些变化。
c# - 包装原始值类型的结构是 C# 中的零成本抽象吗?
有时我想为原始双打添加更多类型安全。经常出现的一个想法是在类型中添加单元信息。例如,
在像上面这样只有一个字段的情况下,JIT 是否能够在所有情况下优化掉这个抽象?与使用未包装双精度的类似代码相比,哪些情况(如果有)会导致生成额外的机器指令?
任何提及过早优化的内容都将被否决。我有兴趣了解基本事实。
编辑:为了缩小问题的范围,这里有几个特别感兴趣的场景......
这些是我能想到的一些事情。当然,像@EricLippert 这样优秀的语言设计师可能会想到更多的场景。所以,即使这些典型的用例是零成本的,我仍然认为最好知道 JIT 是否不将一个结构保持一个值和未包装的值视为等效的任何情况,而不列出每个可能的代码片段作为它自己的问题
c# - RyuJIT C# 错误的求和结果与 /optimize
我有这段代码:
如果我在调试模式下构建我的应用程序,一切正常,test index pre
打印 12 并test index post
打印 14。在Optimize code
未选中的发布模式下相同。如果我使用Optimize code
检查test index post
打印 18 而不是 14进行测试。
如果我替换index += ethType.Length;
为index += 2;
. 似乎只有index++;index++;
在工作。
我在一个空的应用程序中尝试了这段代码,总和还可以。
应用程序是多线程的,但这里没有并发。
来自 DLL 的反编译代码似乎没问题。
任何想法为什么会发生这种情况?
编辑:仅在为 x64 编译应用程序时发生。x86 没问题。
编辑 3:构建环境的一些信息:
visual studio 15.0.0-RTW+26228.4
框架 4.7.02053
可以在框架 4.6.2 和 4.7 上触发此问题。其他框架未经过测试。
编辑 5:新的、更小的示例项目。不需要依赖项。
编辑 6:这里测试项目的反汇编。(这里太长了,不能发)
c# - Vector.Dot 无法正常工作
我正在尝试使用System.Numeric.Vectors
nuget 包(版本 4.4.0),但以下代码无法按预期工作:
代码在 x64 Release .NET 4.7 版本中引发异常,并带有消息:Expected 168 actual -458674576 (cnt: 4, acc:True)
。
Vector 没有硬件加速的所有其他构建都会给出正确的结果。
这是 RyuJIT 中的错误还是我做错了什么?
编辑
替换为 后int
,float
代码给出了正确的结果。此代码是否无法达到int
预期结果?
c# - 为什么 Mono 运行简单方法的速度较慢,而 RyuJIT 运行速度明显更快?
出于好奇,我创建了一个简单的基准,但无法解释结果。
作为基准数据,我准备了一个带有一些随机值的结构数组。准备阶段没有基准:
基本上,我想比较这两种钳位实现:
这是我的基准方法:
我正在使用BenchmarkDotNet 0.10.12 版进行两项工作:
这些是我得到的结果:
我可以接受 Mono 在这里一般来说有点慢。但我不明白的是:
为什么 Mono 运行该Direct
方法的速度比Extension
记住Direct
使用非常简单的比较方法而Extension
使用带有其他方法调用的方法要慢?
RyuJIT 在这里展示了简单方法的 4 倍优势。
谁能解释一下?