Сообщение Re[9]: 2D-Linq и оптимизация цифровых фильтров - 3 от 03.07.2018 9:10
Изменено 03.07.2018 9:31 vdimas
Re[9]: 2D-Linq и оптимизация цифровых фильтров - 3
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vdimas, Вы писали:
V>>Напиши один раз "библиотечный" индексер и пользуйся.
S>Жду пример кода C4 фильтрации на основе "библиотечного" индексера.
Вдогонку, расширил пример на новомодный Span (который сам по себе уже абстрактный индексер).
Заодно из Span<T> легко получить unsafe, поэтому прогнал и его тоже.
Выходит, он удобен сугубо для получения slice-ов из произвольного участка managed или unmanaged памяти, разве что с последующим приведением к unsafe. ))
Результаты:
S>Здравствуйте, vdimas, Вы писали:
V>>Напиши один раз "библиотечный" индексер и пользуйся.
S>Жду пример кода C4 фильтрации на основе "библиотечного" индексера.
Вдогонку, расширил пример на новомодный Span (который сам по себе уже абстрактный индексер).
Заодно из Span<T> легко получить unsafe, поэтому прогнал и его тоже.
Выходит, он удобен сугубо для получения slice-ов из произвольного участка managed или unmanaged памяти, разве что с последующим приведением к unsafe. ))
Дополнительный код | |
| |
Результаты:
Native 2D array: Elapsed(ms)=00:00:00.7712649
Emulated 2D array: Elapsed(ms)=00:00:00.6893393
Span 2D array: Elapsed(ms)=00:00:00.9882120
Unsafe 2D array: Elapsed(ms)=00:00:00.5858264
Re[9]: 2D-Linq и оптимизация цифровых фильтров - 3
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, vdimas, Вы писали:
V>>Напиши один раз "библиотечный" индексер и пользуйся.
S>Жду пример кода C4 фильтрации на основе "библиотечного" индексера.
Вдогонку, расширил пример на новомодный Span (который сам по себе уже абстрактный индексер).
Заодно из Span<T> легко получить unsafe, поэтому прогнал и его тоже.
Выходит, он удобен сугубо для получения slice-ов из произвольного участка managed или unmanaged памяти, разве что с последующим приведением к unsafe. ))
Результаты:
Upd. Перегнал релизный выхлоп в нейтив посредством NetNative, результаты те же.
Мде...
S>Здравствуйте, vdimas, Вы писали:
V>>Напиши один раз "библиотечный" индексер и пользуйся.
S>Жду пример кода C4 фильтрации на основе "библиотечного" индексера.
Вдогонку, расширил пример на новомодный Span (который сам по себе уже абстрактный индексер).
Заодно из Span<T> легко получить unsafe, поэтому прогнал и его тоже.
Выходит, он удобен сугубо для получения slice-ов из произвольного участка managed или unmanaged памяти, разве что с последующим приведением к unsafe. ))
Дополнительный код | |
| |
Результаты:
Native 2D array: Elapsed(ms)=00:00:00.7712649
Emulated 2D array: Elapsed(ms)=00:00:00.6893393
Span 2D array: Elapsed(ms)=00:00:00.9882120
Unsafe 2D array: Elapsed(ms)=00:00:00.5858264
Upd. Перегнал релизный выхлоп в нейтив посредством NetNative, результаты те же.
Мде...