u128 (без всяких доп.трюков) сделало почти чудо, да.
На форуме мне показали bytemuck, позволяющий сделать "запретное" в расте и кастануть [u8] к [u128] с правильным пересчётом размера.
Итог:
noise fill 2560x1440 time: [2.2220 ms 2.2227 ms 2.2239 ms]
change: [-88.993% -88.989% -88.984%] (p = 0.00 < 0.05)
Performance has improved.
2.2ms на полное наполнение 2560х1440 (x4), это 454 раз за секунду, более чем достаточно для практических задач шума.
Собственно, это же подтверждается и практическим замером: 100% шума в каждом кадре даёт 260 FPS.
Итого:
1) u128
2) #[inline(always)]
... И ещё одно доказательство тезиса, что не-многопроцессные оптимизации лучше. От 6 тредов я бы получил максимум 5x улучшение, а тут - 9-кратное, причём, практически, без крупноархитектурных усложнений.
Сам код тут:
https://github.com/amarao/sdl_random