Глобальные характеристики производительности C / C ++ и методы Get / Set - PullRequest
2 голосов
/ 27 января 2009

Я видел этот вопрос, спрашивающий о том, плохи ли глобалы .

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

Но я не совсем уверен в этом. Итак, мой вопрос: будет ли использование global быстрее, чем вызов метода get / set?

Ответы [ 5 ]

10 голосов
/ 27 января 2009

Хороший современный компилятор должен встроить вызовы метода get / set так, чтобы, вероятно, не было никакой реальной разницы.

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

3 голосов
/ 28 января 2009

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

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

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

3 голосов
/ 28 января 2009

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

Это точно такой же тип торговли.

1 голос
/ 28 января 2009

Это зависит от процессора и компилятора. По крайней мере на одном популярном чипсете PPC загрузка глобальной переменной требует дополнительных инструкций, потому что она не может быть закодирована с 16-битным относительным смещением.

Кроме того, это может привести к огромной потере локальности кэша и / или уничтожить любые оптимизации, которые не предполагают псевдонимов. Предполагать, что глобальные переменные могут увеличить производительность, несколько наивно.

1 голос
/ 27 января 2009

Это может быть немного быстрее, но не очень большое увеличение скорости. Глобальные значения, связанные с наличием функций получения и установки для всего, действительно уменьшают размер приложения. Является ли этот тип экономии размера выгодным для вашего приложения, зависит от платформы, на которую вы ориентируетесь. Например, при разработке встроенных приложений, платформ с ограниченной памятью, это может быть жизнеспособным решением.

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