2013-06-29 5 views
2

Я обнаружил, что перемещение глобальных переменных в локальную область сохраняет при распределении стека.стек и глобальные переменные

Будет ли экономия на распределении стека также повышать производительность и скорость программы? Если да, можете ли вы дать мне формулу, которая показывает такие улучшения?

+0

Вы не найдете формулы этой природы нигде. Производительность зависит от большого количества факторов, и эти факторы взаимодействуют. Таким образом, никогда не будет формулы, которая предсказывает, как производительность зависит от размера кадра стека. –

+0

Я не ищу точную формулу, просто хочу понять, как производительность повышается, даже немного, когда сокращение стека уменьшается. Некоторая формула какого-то рода. –

ответ

2

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

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

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

+0

Я тестировал, и он сохраняет распределение стека. Я тестировал множество версий. –

+0

Добавление локальных переменных увеличивает размер фрейма стека функции. В любом случае последний параграф является важным. –

+0

Вы правы, но я использую технику, которая выравнивает весь код. Таким образом, требования к распределению стека уменьшаются вдвое. Мне просто нужно знать о формуле, которая показывает, как производительность увеличивается при уменьшении распределения стека. –