Оптимизирует ли предварительное распределение переменных, используемых в функции-члене, как поля-члены производительность? (C ++) - PullRequest
1 голос
/ 04 марта 2020

Скажем, я определил класс

class myclass{
   private:
      /* some fields */
   public:
      void memberfun{
         int someint;
         double somedouble;
      }
}

В моем классе есть функция-член, в которой мне нужно объявить несколько переменных. Мне нужно вызывать эту функцию-член много раз (она мне нужна для моделирования Монте-Карло). Поскольку я буду моделировать очень большие системы, я заинтересован в оптимизации производительности.

Если я предварительно выделю эти необходимые переменные как публичные c поля-члены, так что мне нужно только получить к ним доступ и перезаписать их, а не выделять память каждый раз, когда я вызываю функцию-член, а затем удаляю, как только я go выходит за рамки, приведет ли это к увеличению производительности?

class myclass{
   private:
      /* some fields */
   public:
      int someint;
      double somedouble;
      void memberfun{
         someint = 1;
         somedouble = 2.0;
      }
}

1 Ответ

3 голосов
/ 04 марта 2020

Относительно производительности, как скажут вам большинство людей: профилировщик - это ваш ответ, а такой подход - преждевременная оптимизация.

Но, несомненно, вы обнаружите, что локальные переменные стека POD (которые имеют 0 накладные расходы) будет работать лучше, чем доступ к переменным-членам, доступ к которым осуществляется через указатель this.

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