История изменений
Исправление monk, (текущая версия) :
Компилятор не делает вокруг этого оптимизаций, и выигрыш мы получаем потому что в unsafe этих проверок просто нет изначально.
На первом этапе - да. А на втором компилятор может убрать недоступный код на основании условий UB или заменить на более быстрый алгоритм. Например, for(int i=a; i!=b; i++)
сразу выкидывать, если b меньше, чем a и внутри цикла нет побочных эффектов.
Исходная версия monk, :
Компилятор не делает вокруг этого оптимизаций, и выигрыш мы получаем потому что в unsafe этих проверок просто нет изначально.
На первом этапе - да. А на втором компилятор может убрать недоступный код на основании условий UB или заменить на более быстрый алгоритм. Например, for(int i=a; i!=b; i++)
сразу выкидывать, если b меньше, чем a.