среднем 1м15с https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=7165d19825d6891392b7e5c748059db1
Но с интами тоже самое (но без трансмута, очевидно) занимает в среднем 10с
Неужели сырой каст инта к флоату занимает столько ресурсов?
Алсо, а есть ли какой-то более хитрый способ перебрать все значения f32?
Пардон, а как без него?
f32 при сравнении на равенство будет генерировать ucomiss или похожую инструкцию, и в целом их дороже сравнивать
но мне нужен i32 -> f32, а не наоборот
1) что за "инт"? 2) в релизе, надеюсь, собирали? у меня на машине код отрабатывает за полсекунды 3) зачем там i32? u32 не подойдёт? с u32 можно использовать f32::from_bits(value) 4) в диапазоне i32::MIN..i32::MAX не содержится максимального элемента, нужно ..= 5) несколько видоизменил код, и результаты у меня такие (среднее из 20ти итераций): u32: 446.421016ms on average f32: 428.330626ms on average код: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=cfcd8d64dfff19a61475644ce3384500
А, точно, f32::from_bits(i as u32) покороче будет
да там i32 по факту не нужен
Обсуждают сегодня