AHOCORASICK - Reduce heap allocation overhead #23865
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.
A
U8*structure is used to track character positions during Aho-Corasick string searching. This used to always be allocated from the heap, and wrapped in a mortal SV to avoid leakage. However, that incurs overhead.Following this commit:
maxlenis small enough.SAVETMPSandFREETMPSat scope entry/exit../perl -e 'my $x = "x" x 100_000_000; 1 while $x =~ /xx|ab/aag;'was used to measure performance.Blead:
sv_points->points_heap:Add
points_stack:Mandatory -> conditional ENTER/LEAVE:
I'm not sure what the optimum stack size should be. For reference, these were the
maxlenvalues observed and the counts of each when building Perl and runningthe test harness: