几个月前我参加了一个研讨会,演讲者发表声明说,自 .NET 1.1 以来,装箱或拆箱操作的一般成本已经降低。我已经查看了我的(糟糕的)笔记,无法确定此语句是否引用了装箱和拆箱说明,或者是引入了使装箱/拆箱不太可能发生的类(即泛型类型)。

.NET 1.1 和 .NET 4.0 之间的 CLR 拳击相关指令是否有性能改进,如果有,我在哪里可以找到有关显示增益的测量的信息?

最佳答案

我不能评论性能(因为你需要分析等) - 但这里一个有趣的变化是 constrained 操作码,它特别用于泛型。这里的优点是对于像这样的方法:

static void DoSomething<T>(T x, T y) where T : IComparable<T>
{
    if(x.CompareTo(y) < 0) { /* whatever */ }
}

它将对 CompareTo 使用受约束的调用,这允许它使用对值类型(没有拆箱)的方法实现的静态调用,或者如果它是引用类型,则使用虚拟调用。通常,在值类型上调用基于接口(interface)的方法需要一个框,因此这非常有用。

10-08 05:18