amarao (amarao_san) wrote,
amarao
amarao_san

Category:

СЯУ про оптимизации floating-point

После невероятно плодотворного срача на хабре, обнаружилось что:
1. fdiv очень медленный. Даже в конвейере он медленнее умножения (+71.244%).
2. Rust (LLVM?) оптимизирует деление на 2.0 заменой его на умножение на 0.5. Применимо ко всем положительным степеням двойки (вплоть до 2u128 << 126).
3. Деление на 0.5 вообще превращается в сложение. (А вот оптимизации умножения на ноль в цикле не происходит - честные 10 умножений на ноль).
4. criterion, как всегда, на высоте. black_box отлично работает: a = black_box(b/black_box(2.0)) отключает все оптимизации.
5. Интереснейший сайт https://godbolt.org/

И я не знаю как его работу воспроизвести руками (посмотреть дизассемблер для кода конкретной функции в rust). Я это себе в качестве домашнего задания по lore оставлю.

PS. Я медленно переползаю на dreamwidth, но без фанфар. Кому удобно ЖЖ, будет жж.
Subscribe

  • (рабочее)

    И всё-таки насколько системы управления конфигурациями осложняют жизнь и отладку - словами не описать. Вместо "пошёл и сделал" - сложный ритуал,…

  • (рабочее)

    Всё-таки построение мониторинга в любой крупной системе - это самая сложная и постепенная задача. Для продукта обычно есть некий минимальный объём…

  • Иногда я просто обожаю свою работу

    Срабатывание мониторинга на на oom killer зависело от числа запущенных процессов. Если их было слишком много - мониторинг не срабатывал. Поиск…

  • 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.
  • 3 comments