Глобальные переменные или частое пересоздание локальных?
==========================================================

 Добрый день.  

Имеется функция, вызываемая несколько тысяч раз в секунду.   

В теле функции и только в ней используется 4 переменных (тип double), значение которых не зависит ни от других функций, ни от предыдущих вызовов данной функции. Иными словами, по сути это локальные переменные, хранящие вр*е*менные значения.  

Улучшит ли производительность использование глобальных переменных вместо частого перевыделения памяти?  
  

Спасибо за ответы! 

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

И да, локальные переменные временного характера (особенно, объявленные const) оптимизатор скорее всего просто вышвырнет из готовой программы, а вот с глобальными такой трюк может и не пройти.  
  

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

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

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

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

Если функция - метод класса, то можно вынести эти локалки в поля класса.   

Если совсем хочется, то можно создать локалку внутри .cpp файла, которую не будет видно снаружи, но будет видно внутри файла. 

 А потом ты решишь распараллелить выполнение этих функций и ...