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