Expensive local variable copy
Local variable is created by copy from a const
reference and not
modified later
Since R2021a
Description
This defect occurs when a local variable is created by copy from a
const
reference but not modified later.
For instance, the variable name
is created by copy from a
const
reference returned from the get_name
function:
const std::string& get_name(); ... void func { std::string name = get_name(); }
2 * sizeof(void *)
.Risk
If a variable is created from a const
reference and not modified
later, the variable itself can be defined as a const
reference. Creating
a const
reference avoids a potentially expensive copy operation.
Fix
Avoid creating a new local variable by copy from a const
reference if
you do not intend to modify the variable later. Create a const
reference
instead.
For instance, in the preceding section, you can redefine the variable
name
as:
const std::string& get_name(); ... void func { const std::string& name = get_name(); }
Performance improvements might vary based on the compiler, library implementation, and environment that you are using.
Examples
Result Information
Group: Performance |
Language: C++ |
Default: Off |
Command-Line Syntax:
EXPENSIVE_LOCAL_VARIABLE |
Impact: Medium |
Version History
Introduced in R2021a
See Also
Find defects
(-checkers)
| Expensive pass by value
| Expensive return by
value
| Expensive copy in a range-based for
loop iteration
| Unmodified variable not
const-qualified
Topics
- Interpret Bug Finder Results in Polyspace Desktop User Interface
- Interpret Bug Finder Results in Polyspace Access Web Interface (Polyspace Access)
- Address Results in Polyspace User Interface Through Bug Fixes or Justifications
- Address Results in Polyspace Access Through Bug Fixes or Justifications (Polyspace Access)