Помогает ли объявление переменных C ++ const или ухудшает производительность?

Я понимаю поведение const -квалифицированных типов данных. Тем не менее, мне любопытно, есть ли какой-либо выигрыш или потеря производительности из-за чрезмерного или недостаточного усердия в квалификации переменных как const . Я думаю, в частности, о переменных, объявленных и используемых исключительно в изолированном блоке кода. Например, что-то вроде:

const qreal padding = CalculatePadding();
const QSizeF page_size = CalculatePagePreviewSize(padding);
const QRectF content_rect = CalculatePagePreviewContentRect(page_size);
const QList<QRectF> pages = renderer.BuildPrintPages(printer_, map_scene_);
const QFont page_number_font = CalculatePageNumberFont();
const QFontMetrics metrics(page_number_font);

Предположим, мне нужны только const -квалифицированные методы для всех этих (и других). Есть ли прирост производительности при объявлении их всех const ? Или, наоборот, действительно ли это вредит производительности?

Мне интересно узнать о производительности во время выполнения ( Я предполагаю, что это не имеет значения, поскольку const является исключительно проверкой во время компиляции - может кто-нибудь подтвердить ? ) и производительность во время компиляции. У меня недостаточно опыта работы с С ++, чтобы почувствовать это, и мне интересно, должен ли я ошибаться в сторону чрезмерного или недостаточного применения const , когда все остальное (ремонтопригодность и т. Д.) равно.

8
задан Dave Mateer 5 October 2010 в 19:29
поделиться