Комментарии 5
Предположение по 3 xor как реализацию инструкции xchg меня так выбесило, что я почти написал возмущенный коммент. Очевидно, что через mov с временным регистром быстрее (временные скрытые регистры дёшевы). Но тогда почему второй и третий uops не паралелятся? Стоп, почему вообще не выполнить операцию только на уровне переименования регистров?
В общем, если кого заинтересовал ответ, то он тут:
Спойлер: это неважно и никогда не пригодится вам в жизни.
Спойлер: никаких 3 xor!
По содержанию статьи. А давайте посмотрим, как выглядит погретый бенчмарк обращения к List в цикле. Интересно, потеряет ли JIT компилятор вторую проверку.
Скорее всего останется 2 проверки:
- Сравнение со свойством Count у листа
- Сравнение со свойством Length у массива.
Эти 2 значения редко совпадают.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Индексаторы в C# под капотом: индексируем лучше Доу-Джонса