Дмитрий Радищев (dibr) wrote,
Дмитрий Радищев
dibr

Category:

и ещё про оптимизацию

И ещё про оптимизацию понравилось. Перескажу своими словами.

Есть у нас, например, массив. Из четырёх элементов типа float (обычные числа). И хотим мы проверить, нет ли среди них такого, косинус которого больше единицы. Заводим флажок, заносим в него false, делаем цикл от нуля до четырёх включительно, "если косинус x[i] больше единицы то флажок = true", выводим значение флажка.
Получаем (в случае глубоко оптимизирующего компилятора) true.

Но как?! Косинус чего оказался больше единицы??

А очень просто. "Цикл от нуля до четырёх включительно" - это ошибка "выход за границы массива", потому что заметает пять элементов, а не четыре. "Выход за границы" - это "неопределенное значение", а любую формулу, включающую неопределённое значение, можно не считать, а просто брать такое значение, при котором код выполнится быстрее.
А быстрее всего - выкинуть вообще всё, включая весь цикл и сам флажок, и просто вывести "true". Потому что компилятор имеет право считать что косинус (неопределенного) "пятого элемента" больше единицы, а в этом случае "true" выведется при любых значениях элементов массива.

"Умный дом, умный телевизор, умный телефон, умные часы... кажется, я тут уже лишний" (с)
Subscribe

  • нейросеть

    "Саша вышел на улицу и медленно побрел к сияющему веселыми электрическими огнями в окнах зданию Госплана. Впереди включилась разрезалка пополам - по…

  • ухо

    "– Она поранила себе ухо… точно не знаю чем… – Наверное, маникюрными ножницами, – предположила мисс Марпл. – От малейшего пореза мочки начинается…

  • Гонец

    На фото, если что, не популярная "рация гастарбайтеров" Baofeng 888s, а мобильный терминал системы спутниковой связи "Гонец" от…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 45 comments

  • нейросеть

    "Саша вышел на улицу и медленно побрел к сияющему веселыми электрическими огнями в окнах зданию Госплана. Впереди включилась разрезалка пополам - по…

  • ухо

    "– Она поранила себе ухо… точно не знаю чем… – Наверное, маникюрными ножницами, – предположила мисс Марпл. – От малейшего пореза мочки начинается…

  • Гонец

    На фото, если что, не популярная "рация гастарбайтеров" Baofeng 888s, а мобильный терминал системы спутниковой связи "Гонец" от…