Инструкции процессора Rust i128 ops отличаются от инструкций C++ i128 opsC++

Программы на C++. Форум разработчиков
Anonymous
Инструкции процессора Rust i128 ops отличаются от инструкций C++ i128 ops

Сообщение Anonymous »

Я оцениваю производительность Rust для распространенных операций со значениями i128 и i64. Оказывается, значение i128 требует 2 дополнительных операций ЦП для выполнения одной и той же операции. Я использовал Rustc v1.83.0 с флагом -O.
Rust godbolt
Однако для сравнения я также использовал аналогичную логику для C++ clang 14 и -O, и, что удивительно, он показал одинаковое количество операций ЦП для типов int64_t и __int128.
C++ godbolt
Я понимаю, что Rust использует LLVM для генерации кода, который отличается от clang, но я ожидал, что такие базовые операции низкого уровня будут оптимизированы аналогичным образом.
Почему такая разница? Как я могу использовать более оптимизированную реализацию в Rust?

Подробнее здесь: https://stackoverflow.com/questions/793 ... c-i128-ops

Вернуться в «C++»