Speed up monster action planning #35632
Merged
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.
SUMMARY: Performance "Speed up monster action planning."
Noticed that sleeping in the lab was a bit slow, so I attached a profiler to see what was going on.
With GNU libstdc++,
shared_ptr<>
will always use threadsafe operations when linked against libpthread at all. This is not necessary in CDDA, so replaceshared_ptr<>
withshared_ptr_fast<>
andweak_ptr<>
withweak_ptr_fast<>
, which is redefined to use libstdc++'s internal single-threaded version.After that, I noticed that calculating distances in
monster::rate_target()
was eating up a lot of time to compute trig distances.rate_target
doesn't need the actual distance until a way's in, so if we inlinerl_dist
and allow it to defer thesqrt
until later on by addingrl_dist_squared
and comparing with the square ofbest
instead, we can make up a bunch more speed.