u128

Mar. 12th, 2021 10:59 pm
amarao: (Default)
[personal profile] amarao
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

Date: 2021-03-13 02:59 am (UTC)
ufm: (Default)
From: [personal profile] ufm
А ты можешь глянуть, во что self.factor.to_ne_bytes() компилируется в результате?

Date: 2021-03-13 08:57 am (UTC)
ufm: (Default)
From: [personal profile] ufm
А если не трудно - можно еще чуть сверху/снизу показать?

Date: 2021-03-13 10:43 am (UTC)
ufm: (Default)
From: [personal profile] ufm
Там не только инлайны, там еще и оптимизация. Я, честно говоря, не ожидал, что нынешние компиляторы умеют на столько суровую оптимизацию.

Date: 2021-03-13 09:58 am (UTC)
ufm: (Default)
From: [personal profile] ufm
Впрочем - не надо. Я сам позаморачивался...

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 02:45 pm
Powered by Dreamwidth Studios