-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extend raycast microbenchmarks #201
Conversation
347e958
to
e0c0a9f
Compare
Hmm, the extra grid cell validity checks perhaps? Or maybe it's just the extra indirections, pushing and popping the call stack takes time. Though that doesn't explain the performance drop when using |
From what I saw,
I noticed we use I'm almost sure, even for O3, the compiler won't be smart enough to inline those calls. |
Actually, I think the compiler can inline those calls. |
New results:
|
It's fully typed and everything is within the same translation unit, it should be able to do the inline (pero a seguro se lo llevaron preso 👀). |
Never trust a compiler to detect two things are the same when a pointer/far-reference is involved. However a quick measurement seems to make no difference in the benchmarks, so probably these are getting detected and inlined. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
a531151
to
afeaace
Compare
Latest results after rebasing:
The different variants are more similar now, and |
Signed-off-by: Nahuel Espinosa <[email protected]>
Signed-off-by: Nahuel Espinosa <[email protected]>
Signed-off-by: Nahuel Espinosa <[email protected]>
Signed-off-by: Nahuel Espinosa <[email protected]>
afeaace
to
aa84148
Compare
Proposed changes
Related to #167.
This patch extends existing microbenchmarks to use as reference to compare the performance of the raycast and occupancy grid implementation.
Type of change
Checklist
Additional comments
The baseline raycast and occupancy grid implementations were inspired by
nav2_amcl
.Command to run:
colcon build --packages-up-to beluga && ./build/beluga/test/benchmark/benchmark_beluga --benchmark_filter=Ray
First results:
The baseline grid with the baseline raycast algorithm implementation is three times faster than those provided by the library.
Performance drop occurs when replacing
BaselineGrid
withStaticOccupancyGrid
. More research is required, but I wanted to share the first results.