c# - 为什么在 C# 中添加 2D 矢量结构比添加 3D 矢量结构慢?

标签 c# performance struct

我最近制作了一个基准测试应用程序,以探索在 C# 中为数学结构编写加法运算符的几种方法:https://github.com/nickgravelyn/math-struct-benchmark .在结果中,我发现 Vector2 始终比 Vector3 慢,尽管它的数据和指令更少。更有趣的是,我测试的每个运行时/JIT 似乎都是这种情况。

例如,在 .NET Core 2.2 上运行时,+ 运算符的基准测试为 one of the tested Vector2实现花费了 921.82 毫秒,而 comparable Vector3执行耗时 422.76 毫秒。

是否有来自 C#、IL 或 native 程序集的某些原因可以解释为什么我可能会看到这些结果?还是我在我的基准测试中搞砸了一些我似乎无法发现的东西?

最佳答案

经过更多挖掘后,这是 64 位 RyuJIT 代码生成的问题。我有一个 issue filed使用 CoreCLR,这似乎与其他一些性能问题相关或相同。

关于c# - 为什么在 C# 中添加 2D 矢量结构比添加 3D 矢量结构慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405734/

相关文章:

c# - WCF 客户端对象反序列化通知

c - 带循环的结构和内存分配

c# 根据正则表达式突出显示 rtb 文本颜色

c# - 如何将公共(public)抽象类的子类化限制为同一程序集中的类型,从而允许将 protected 成员类型化为内部类型

performance - 与 C 相比,Rust 文件 I/O 非常慢。有什么问题吗?

performance - 电子商务:计算折扣的算法

asp.net - 当只有一件事发生变化时,为什么 ASP.NET 会重新编译(重新 JIT)所有​​内容?

c - 在 C 中初始化结构体数组

c++ - 将一个结构的值复制到另一个

c# - 在数据集中添加新行时检查重复项的最佳方法?