局部变量的循环性能

Loop performance for local variable

本文关键字:性能 循环性 循环 局部变量      更新时间:2023-10-16

是否存在第一个样本与第二个样本之间的性能惩罚?为什么?

// 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);
}

在循环中创建变量是一种很好的做法,以确保它们的作用域仅限于该循环。此外,重要的是要声明尽可能接近它们的变量。要尽可能使用这些变量。

这是另一篇关于的更多信息

在循环中声明变量,好的做法还是坏的做法?

通常,如果对象不是普通的旧数据,那么每次循环迭代都会有运行对象的构造函数/解构器的开销。在字符串的情况下:分配和释放str的内部缓冲区。只有当findStr和processStr都是高性能的时,这才会影响性能。