= *start;
*start = *end;
*end = buff;
}
Из-за этой строчки? Что каждый символ через перем бафф?
Как вариант использовать другие сортировки?
какие сортировки
Пока не дошёл до них
что такое и из чего слаживаюстя С-strings?
Из символов типа чар
тепленько, в размер гдето храница?
Ну место то, но причина не та, бафф это весьма неплохой вариант, т.к. свап через тот же КСОР медленнее будет. Проблема в том, что компилю очень сложно оптимизировать это решение, здесь и чтение с конца памяти в начало, и итерации по одному элементу и неизвестное количество итераций, которое вычисляется за линию. Самое базовое, что здесь нужно сделать это развернуть цикл, можно попробовать использовать метод даффа (хотя он не всегда улучшает производительность). Далее можно попробовать использовать векторные инструкции, т.е. брать элементы блоками, далее с помощью маски менять местами их в рамках блока, а потом и менять местами блоки.
гдето даже статью и либу видел по этому поводу, может найду
Либу с интринсиками?)))
там обвязка над ними была
Через билтины, детектящие поддержку?
Char str[SIZE] - в виде массива символов, а char *str = " " - я так понимаю стоковый литерал, который не изменить
вот оно https://dev.to/wunk/fast-array-reversal-with-simd-j3p https://github.com/Wunkolo/qreverse
Обсуждают сегодня