Я наткнулся на этот фрагмент кода в .NET Исходный код:
// Following trick can reduce the range check by one
if ((uint) index >= (uint)_size) {
ThrowHelper.ThrowArgumentOutOfRangeException();
}
По-видимому, это более эффективно (?), чем if (index < 0 || index >= _size)
Мне любопытно, что такое трюк. Является ли одна инструкция перехода действительно более дорогой, чем два преобразования на uint
? Или существует какая-то другая оптимизация, которая сделает этот код быстрее, чем дополнительное числовое сравнение?
Обратиться к слону в комнате: да, это микро-оптимизация, нет, я не собираюсь использовать это везде в своем коде - мне просто интересно;)