chore(behavior_velocity_planner): remove unnecessary data copy #672
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Motivation and change details
The previous method for aggregating debug markers involved iterating and pushing each marker, causing an unnecessary deep copy for every single one.
This change uses
std::make_move_iterator
to move the entire block of markers from eachscene_module
at once, eliminating the performance cost of copying. The behavior should remain the same.Performance analysis
A performance analysis was done by using the lane driving scenario in the Autoware tutorial as well as the sample map data also mentioned in the tutorial.
For each performance measurement, I placed the initial pose and the goal at the exact same positions using Python script, then measured how long each execution of
modifyPathVelocity
took using the debug topic/planning/scenario_planning/lane_driving/behavior_planning/behavior_velocity_planner/debug/intersection/processing_time_ms
.Measurements were performed 3 times, both before and after this change. The resulting improvement is shown below:
Related links
None
How was this PR tested?
Notes for reviewers
None.
Interface changes
None.
Effects on system behavior
None.