最佳答案
我在.NET 的 列出源代码中偶然发现了这段代码:
// Following trick can reduce the range check by one
if ((uint) index >= (uint)_size) {
ThrowHelper.ThrowArgumentOutOfRangeException();
}
显然,这比 if (index < 0 || index >= _size)
更有效
我对这个把戏背后的理由感到好奇。一个分支指令真的比两个到 uint
的转换更昂贵吗?或者是否有其他的优化正在进行,使得这段代码比额外的数值比较更快?
要解决房间里的大象: 是的,这是微优化,不,我不打算在我的代码中的任何地方使用它-我只是好奇;)