Loop performance for local variable

577 views Asked by At

Is there any performance penalties has 1st sample vs. 2nd one and why?

// 1. variable is declared inside the loop body
while(isSomethingTrue == true) {
  std::string str;
  findStr(str); // str initialization
  processStr(str); // processStr does not change its argument
}

// 2. variable is declared outside the loop body
std::string str;
while(isSomethingTrue == true) {
  findStr(str);
  processStr(str);
}
2

There are 2 answers

0
BeyelerStudios On BEST ANSWER

In general there will be the overhead of running the constructor/deconstructor of your object per loop iteration, if it isn't plain old data. In case of string: allocating and deallocating str's internal buffer. This only impacts performance if findStr and processStr are both highly performant too.

1
Federico Navarro On

It is a good practice to create variables inside the loop, in order to ensure their scope is restricted to that loop. Also, it is important to declare the variables as close to their are going to be used as you can.

Here is another post with more information about that:

Declaring variables inside loops, good practice or bad practice?