Есть ли какие-либо преимущества в объявлении общепризнанной переменной глобальной? - PullRequest
1 голос
/ 27 июля 2011

Например, у меня:

char query[512];

объявлено примерно 27 раз в моем приложении, которое подключается к базе данных mysql.

Каждый раз один и тот же размер, объявленный во многих различных функциях.

Это приложение никогда не будет использовать потоки.

Запрос ВСЕГДА выполняется сразу после того, как запрос установлен с помощью snprintf.Между настройкой и выполнением запроса нет функции, которая могла бы его испортить.

Есть ли у них какие-либо преимущества или увеличение производительности, если объявить это глобальной переменной?

Ответы [ 4 ]

3 голосов
/ 27 июля 2011

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

2 голосов
/ 27 июля 2011

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

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

Конечно, это действительно зависит от вашего конкретного контекста (например, ЦП, язык программирования и т. Д.).Так что это может быть либо.

1 голос
/ 27 июля 2011

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

1 голос
/ 27 июля 2011

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

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