Скорость доступа к переменным const в c/С++

Доступ к переменным const быстрее, чем переменная non const? Мне интересно, стоит ли использовать const в качестве шага в оптимизации программы.

Ответ 1

Возможно, ответ на ваш вопрос.

Как отметил Бьерн, на этот вопрос можно ответить только тщательным бенчмаркингом, потому что существует слишком много архитектурных причин, почему ответ может быть да или нет.

Вот ссылка fooobar.com/questions/17909/... при тестировании:

Если вы работаете над проектом, где имеет значение скорость, единственный способ узнать, что делает компилятор, и как он влияет на скорость, - это прочитать созданную сборку и выполнить тщательный бенчмаркинг. Теоретизация того, что может сделать компилятор, неэффективна. Если вы работаете во встроенной системе, осциллограф - отличный способ времени, на машинах с большим количеством ресурсов полезен таймер с высоким разрешением, предоставляемый ОС.

Ответ 2

Если значение константа времени компиляции (например, числа, enum, const значения, constexpr иногда в С++ 11 и т.д.), то да, они могут быть доступ к ним быстрее по сравнению с другими переменными. Они даже могут быть помещены в сегмент кода.

Однако это не верно для любого const:

const int x = 5;  // can be faster
const int c = foo(); // normal non-modfiable variable, normal speed

В примере вы можете видеть, что все немодифицируемые переменные не являются константами времени компиляции.