Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Nuzhny, Вы писали:
N>>Э, там у тебя в репозитории не самый удачный С++ код, можно его ускорить в пару раз, при этом не факт, что он ещё и увеличится. Не читал код бенчмарка, но явно выделение памяти не надо делать при каждом вызове фильтра,
S>надо. По определению — каждый вызов фильтра возвращает новый массив.
В плюсах предвыделяют память и далее запускают pipeline.
Никто новые массивы не создаёт и не вовращает, ес-но...
По крайней мере, на уровне ответственности конкретного алгоритма.
S>Иначе будем сравнивать яблоки с бананами.
Иначе можно было ограничиться сравнением эффективности вызова new, не усложняя это сравнение всякими linq2d.
S>Что имеется в виду? SIMD на ручных интринсиках? Как раз от этого хотелось бы уйти.
/arch:AVX2?
Но этого мало, надо смотреть, как код бегает по данным, т.е. возможна ли векторизация в том обходе памяти принципиально?
Потому что комплятор зачастую никакой векторизации не делает ввиду её невозможности согласно алгоритма, даже если компилит использование более широкого файла MMX/YMM-регистров... использование файла этих регистров не есть векторизация.