Глобальные значения производительности C / C ++ по сравнению с методами Get / Set

StackOverflow https://stackoverflow.com/questions/485155

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top