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

  • Бедный линукс

    На сервер приходит миллион разных IP'шников (хитрая конструкция на самом сервере) Попытка отправить пинг с сервера в этот момент: ping 8.8.8.8 PING…

  • conntrack zones

    А вот кто что мне может рассказать про conntrack zones, и про то, как оно соотносится с network namespaces? Если быть точным, вопрос про то, общие ли…

  • how to add named veth

    instead ip link add type veth one should use ip link add name1 type veth peer name name2

  • 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