⚡️ Speed up method Host.parseHosts by 8%#100
Open
codeflash-ai[bot] wants to merge 1 commit intofix/add-mockito-test-dependencyfrom
Open
⚡️ Speed up method Host.parseHosts by 8%#100codeflash-ai[bot] wants to merge 1 commit intofix/add-mockito-test-dependencyfrom
Host.parseHosts by 8%#100codeflash-ai[bot] wants to merge 1 commit intofix/add-mockito-test-dependencyfrom
Conversation
parseHosts is ~8% faster (408 µs → 378 µs) after replacing the external HostParser with an inlined single-pass, low-allocation parser. The new implementation scans the input char-by-char, pre-counts commas outside IPv6 brackets to pre-size the ArrayList, trims and extracts fields by index (avoiding split/regex and many temporary substrings), and uses a cheap isDigits check so Integer.parseInt is only invoked for numeric port fields—collectively reducing allocations, repeated scans, and GC churn. Trade-offs are modest: the parsing logic is more manual and slightly larger, and a couple microbenchmarks show tiny variance within noise, but the net reduction in CPU and memory work improves throughput for common and large host lists.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
📄 8% (0.08x) speedup for
Host.parseHostsinclient/src/com/aerospike/client/Host.java⏱️ Runtime :
408 microseconds→378 microseconds(best of169runs)📝 Explanation and details
parseHosts is ~8% faster (408 µs → 378 µs) after replacing the external HostParser with an inlined single-pass, low-allocation parser. The new implementation scans the input char-by-char, pre-counts commas outside IPv6 brackets to pre-size the ArrayList, trims and extracts fields by index (avoiding split/regex and many temporary substrings), and uses a cheap isDigits check so Integer.parseInt is only invoked for numeric port fields—collectively reducing allocations, repeated scans, and GC churn. Trade-offs are modest: the parsing logic is more manual and slightly larger, and a couple microbenchmarks show tiny variance within noise, but the net reduction in CPU and memory work improves throughput for common and large host lists.
✅ Correctness verification report:
🌀 Click to see Generated Regression Tests
To edit these changes
git checkout codeflash/optimize-Host.parseHosts-mmbrx7a9and push.