我最近制作了一个基准测试应用程序,以探索在 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/