使用.Net中的不安全代码来交换复杂类型的对象是否有速度优势?

时间:2010-10-17 19:12:29

标签: .net performance unsafe

这是我当前用于交换数组中2个KeyValuePair对象的交换代码:

KeyValuePair<int, T> t = a[i];
            a[i] = a[j];
            a[j] = t;

使用不安全代码并仅仅交换2个对象的指针会有任何速度优势吗?或者编译器是否有效地将这个安全代码简化为有效地执行此操作?

2 个答案:

答案 0 :(得分:4)

不,它不会更快。

这是最糟糕的过早微观优化。

事实上,它会慢一个数量级,因为你需要固定数组(使用fixed keyword)以获得指向它的指针。

答案 1 :(得分:0)

每个优化中都有.Net指针的空间。在你的特殊情况下并没有太多但像循环冗余检查这样的东西,指针可以给我们更好的解决方案。