Есть ли какой-либо флаг компилятора, чтобы вызвать неопределенное поведение для целочисленного переполнения со знаком? - PullRequest
0 голосов
/ 09 мая 2019

Я пишу графовый алгоритм, который должен быть очень быстрым. Есть ли какой-либо флаг компилятора для принудительного неопределенного поведения для целочисленного переполнения со знаком, как C? Или любые другие флаги, чтобы вызвать больше неопределенного поведения? Если нет, кто-нибудь измерял разницу в скорости?

1 Ответ

2 голосов
/ 09 мая 2019

Целочисленное переполнение в Rust никогда не запускает неопределенное поведение, в отличие от C. При компиляции в режиме отладки арифметические операции проверяют переполнение и панику, но в режиме выпуска нет никаких проверок.Поведение можно контролировать, передавая флаг -C overflow-checks=yes в rustc.

В более общем случае, вы должны обязательно использовать сборки выпуска, если производительность имеет значение.Если вы хотите использовать только определенный процессор, вы можете использовать -C target-cpu=val, например, -C target-cpu=native, чтобы оптимизировать текущий процессор.И, конечно, вам нужно профилировать свой код, чтобы понять, что оптимизировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...