Как всегда, используйте код, упрощающий код.
Если вы используете глобальный язык, то читателю кода нужно задаться вопросом , почему и где еще находится эта переменная. Сколько потоков они обращаются? Как синхронизируются обращения из разных потоков?
Если вы создадите локальную переменную, которая видна только там, где это необходимо, эти вопросы уходят.
Скоростной шаг, единственное, что может изменить ситуацию - это местоположение в кэш. Если к переменной часто обращаются, она будет кэшироваться в обоих случаях, но если она будет расположена рядом с другими недавно использованными объектами, они смогут использовать одну и ту же линию кэша, оставляя больше свободного места в кэше для других данных ,
Но если код стоит оптимизировать, то это также стоит измерить.
Избегайте глобализации - это простой, чистый вариант. Если производительность является проблемой, и ваши измерения показывают, что с использованием глобальной функции быстрее, переключитесь на глобальную.
Но имейте в виду, что вы также меняете семантику своей программы. Если у вас есть несколько потоков, вызывающих функцию, вы получите условие гонки, если вы используете глобальный, где это было безопасно до
Как насчет тестирования и выбора времени обоих вариантов? – sharptooth
Если это имеет значение, это стоит времени. Тем не менее, переменная-член, вероятно, будет чаще находиться в кеше с вашими другими данными. – GManNickG
«Под лимит времени»? Какой срок это? Полмиллиарда доступа в секунду могут означать, что это важно по производительности, но полмиллиона долларов в час сделает его совершенно несущественным. – jalf