Инженеры из японской компании Cybozu Labs разработали новый способ деления на константу, оптимизированный для 64-битных процессоров. В отличие от традиционных 30-летних алгоритмов, ориентированных на 32-битные системы, инновация использует избыточную разрядность современных регистров, что позволяет ускорить вычисления.
Патч уже включён в LLVM — популярный компилятор с открытым исходным кодом, а обновления для GCC и MSVC проходят тестирование. Ранее стандартный метод Гранлунда и Монтгомери (GM-метод) требовал сложных промежуточных вычислений с 33-битными «магическими числами», что снижало эффективность на 64-битных процессорах.
Авторы метода, Мицунари Шигео и Хошино Такаши, предложили использовать прямую трансформацию формулы с 64-битной арифметикой, применяя инструкции MULX и UMULH для быстрого умножения без лишних флагов процессора. Это сокращает количество операций с 9 до 3, уменьшает задержки и повышает параллелизм.
Бенчмарки на Intel Xeon w9-3495X и Apple M4 показали ускорение вычислений до 1.67 и 1.98 раза соответственно. Особенно заметен прирост на Apple M4 благодаря высокой пропускной способности умножителей. Кроме того, на Xeon метод улучшил стабильность времени выполнения задач, что критично для серверных приложений.
Интеграция новшества в компиляторы обеспечит ускорение программ, работающих с большими данными, включая базы данных, криптографию и сетевой анализ. Это практическое улучшение уже внедряется в индустрию и позволит программам использовать потенциал 64-битных процессоров без изменения исходного кода.
Однако некоторые эксперты отмечают, что для окончательной оценки эффективности требуется тестирование на различных процессорах и архитектурах с полноценной визуализацией результатов, поскольку прежние заявления о прорывах не всегда подтверждаются на практике.
