局部变量的循环性能
Loop performance for local variable
是否存在第一个样本与第二个样本之间的性能惩罚?为什么?
// 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都是高性能的时,这才会影响性能。
相关文章:
- OpenMP for 循环并行性问题
- 与多个 for 循环与单个 for 循环 wrt 相关的性能从多映射获取数据
- 基于范围的 for 循环range_declaration中各种说明符之间的性能差异
- C++中循环的性能差异
- 需要帮助编写一个小程序来将循环乘以 n 个元素和 k 个多重性
- C++循环性能的倍数
- 在原始循环上使用boost::irange的性能损失
- OpenMP 嵌套循环处理性能
- 虚拟函数调用的性能作为 for 循环中的上限
- 在 C++ 中使用 OpenMP 并行化两个 for 循环不会提供更好的性能
- C++和Java的字符串循环性能比较
- C++:if 内部循环的性能影响
- 为什么在循环外举起弦会导致性能较慢
- openMp的多个独立for循环的性能问题
- C 的性能11现代风格的循环与老式循环
- 如何使用循环检查等效性,然后在没有等效性的情况下执行一些代码?
- 在两者中使用基类和派生类作为数组时的循环性
- 用于C++和性能关键型应用程序中的循环
- 奇怪的OpenCL调用C++上的副作用来提高循环性能
- 性能:循环声明与循环重新初始化