Re[2]: Отключение проверки выхода за границы массива
От: VladCore  
Дата: 21.09.20 16:52
Оценка:
Здравствуйте, rameel, Вы писали:

VC>>Кто помнит, в обоих ли случаях JIT отключает проверку на выход за границы массива, или только в первом?

VC>>arr — массив одномерный в обоих случаях

R>Зависит от рантайма. Для последних (Core и NET FW 4.8 x64) разницы никакой нет, будет сгенерирован один и тот же код — проверки на выход за границы будут устранены. Для NET FW 4.8 x86 во втором варианте оптимизация уже не работает, соответственно проверки устранены уже не будут.


R>Все это справедливо только, если работаешь с локальной переменной или аргументом метода. В этом случае, джит уверен, что никто не изменит ссылку из вне метода, в остальном случае — гарантий нет, и джит вставит проверки на выход за границы массива


а JIT только про массивы знает или другие коллекции с неизменной длиной тоже оптимизирует на проверку выхода за границы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.