如here所示,结构通过引用传递副本和类。但是为什么使用ref关键字通过引用传递结构仍比传递类的引用慢?
通过将Singleton
关键字替换为struct
,我的计划速度有所不同。所有变量都已使用class
关键字传递
通过更改关键字,我的测试速度提高了20%。 Shoudn的速度保持不变,因为我已经通过参考传递了吗?我不理解的是什么?
答案 0 :(得分:3)
通过ref
传递struct与通过值传递类(指向数据的指针)大致相同,通过ref
传递类(指向数据的指针)应该比传递类慢一点值作为额外的取消引用。
是否通过将“按值传递结构”替换为“通过ref传递结构”来改进速度取决于结构的大小。如果你遵循Microsoft's guidance“struct< = 16 bytes”的大小,那么差异可能无关紧要,否则如果struct很大,你可能会看到一些性能提升。
潜在的收益/损失还取决于32位与64位(x86 / x64)CPU架构的选择 - 如果性能在您的情况下非常重要,请在目标机器上仔细测量。
注意:通过ref传递struct通常会将类型选择限制为数组和字段 - 确保您愿意忍受此类限制。