Инженеры из японской компании Cybozu Labs разработали новый метод деления на константу, нацеленный на 64-битные процессоры. Данный подход устраняет недостатки устаревших 32-битных алгоритмов, используя современные регистры. Патч уже внедрен в LLVM, а обновления для GCC и MSVC проходят тестирование.
До сих пор компиляторы, такие как GCC и Clang, использовали 30-летние технологии, оптимизированные для 32-битных систем. Метод Гранлунда и Монтгомери, применяемый с 1994 года, заменял деление на умножение на «магическую константу» и битовые сдвиги, что создавало проблемы с 33-битными делителями и снижало производительность.
Новый подход, предложенный Мицунари Шигео и Хошино Такаши, предлагает прямую трансформацию формулы с использованием 64-битной сетки. Это позволяет выполнять деление всего за одну операцию.
Бенчмарки на Intel Xeon и Apple M4 показали прирост производительности до 1.98x. Интеграция новых методов в компиляторы обещает ускорение программного обеспечения для работы с большими данными, что является значительным шагом вперед в оптимизации вычислений.
