Feb. 16th, 2021

amarao: (Default)
После невероятно плодотворного срача на хабре, обнаружилось что:
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, но без фанфар. Кому удобно ЖЖ, будет жж.

Profile

amarao: (Default)
amarao

October 2025

S M T W T F S
   1234
5 67891011
12 131415161718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 8th, 2025 04:10 pm
Powered by Dreamwidth Studios