Pull to refresh

Comments 6

Пробовали переписать реализацию на компилируемые ЯП?

Да, это мой следующий шаг, слишком уж много расходов и ограничений встретил на питоне. Новые бенчмарки будут на чистом c++.

Зачем здесь редукция Барретта?

Потому что она не нужна (godbolt). Самая наивная реализация даёт более оптимальный код, чем то, что Вы написали.

Да, посмотрел, вы правы. Для constexpr-модуля компилятор сам оптимизирует % 137, причем лучше моего ручного варианта с while. Поправлю у себя, спасибо.

Не для constexpr, а просто для любого деления на константу. Для деления на неконстанту есть libdivide — лучше оттуда взять алгоритм (чтобы не было while)

На scalar-редукции % 137 быстрее Барретта примерно в 1.1-1.5 раза, но в полном бенчмарке эффект небольшой, около пары процентов.

Sign up to leave a comment.

Articles