【发布时间】:2011-01-17 18:58:50
【问题描述】:
我一直在寻找 mscorlib 以了解通用集合如何优化其枚举器,我偶然发现了这一点:
// in List<T>.Enumerator<T>
public bool MoveNext()
{
List<T> list = this.list;
if ((this.version == list._version) && (this.index < list._size))
{
this.current = list._items[this.index];
this.index++;
return true;
}
return this.MoveNextRare();
}
堆栈大小为3,字节码大小应为80字节。 MoveNextRare 方法的命名让我大吃一惊,它包含一个错误案例和一个空集合案例,因此显然这违反了关注点分离。
我假设 MoveNext 方法以这种方式拆分以优化堆栈空间并帮助 JIT,我想对我的一些性能瓶颈做同样的事情,但没有硬数据,我不想要我的巫毒编程变成了货物崇拜;)
谢谢! 弗洛里安
【问题讨论】:
标签: c# performance optimization clr jit