Я думаю, что вы пытаетесь задать вопрос:
Разрешено ли компилятору выполнять дополнительную оптимизацию для типа с нефиксированной шириной, например int
сверх того, что было бы разрешенодля типа фиксированной ширины, такого как int32_t
, который на текущей платформе имеет одинаковую длину ?
То есть вас не интересует та часть, где размерразрешено выбирать нефиксированный тип ширины соответствующим образом для аппаратного обеспечения - вы знаете об этом и спрашиваете, если сверх этого доступны дополнительные оптимизации?
Ответ, насколькоЯ в курсе или видел, это нет .Нет и в том смысле, что компиляторы на самом деле не оптимизируют int
иначе, чем int32_t
(на платформах, где int
32-битный), а также в том смысле, что не существует оптимизаций, разрешенных стандартом для int
которые также не допускаются для int32_t
1 (эта вторая часть неверна - см. комментарии).
Самый простой способ убедиться в том, что различныецелые числа фиксированной ширины - это все определения типов для различных базовых целочисленных примитивных типов - поэтому на платформе с 32-разрядными целыми числами int32_t
, вероятно, будет typedef
(возможно, косвенно) int
.Таким образом, с точки зрения поведения и оптимизации типы идентичны, и, как только вы попадаете в мир IR компилятора, исходный тип, вероятно, даже не будет доступен без перехода через опцию (т. Е. int
иint32_t
будет генерировать тот же IR).
Так что я думаю, что полученный вами совет был неправильным или, в лучшем случае, вводящим в заблуждение.
1 Конечно,ответ на вопрос "Разрешено ли компилятору для оптимизации int
лучше, чем int32_t
- да , поскольку нет особых требований к оптимизации, чтобы компилятор мог это сделатьчто-то странное или наоборот, например, оптимизация int32_t
лучше, чем int
. Хотя это не очень интересно.