Здравствуйте, Mystic Artifact, Вы писали:
MA>Мой старичок показывает такие показометры, в целом повторяя наблюдения (кроме CachedLinqSauvolaScalar):
MA>Получается что UnsafeSauvolaScalar — по прежнему очень и очень хорош. 
Спасибо за данные. Видно, что переход на 5.0 не даёт выигрыша по сравнению с Core 3.1, что более-менее предсказуемо. Разница — в пределах погрешности.
Интересно опять же, что если брать чистое время исполнения, то классический unsafe код исполняется у тебя сильно шустрее, чем у меня.
Относительные времена Vector/Scalar примерно совпадают; что означает, что используется тот же instruction set.
Пока что ещё есть куда крутить оптимизацию — например, фаза предынтегрирования пока что не векторизуется из-за накладок при доступе к r[0, -1].
Ещё там не очень оптимально сделан тернарный оператор; но я пока что даже в disassembly ему не смотрел — там нужно прямо очень приседать; обычные способы для динамического кода не работают.