[JAVA-4816] perf: improving performance of ObjectId parseHexString() #1034
+23
−4
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.
JIRA Ticket: https://jira.mongodb.org/browse/JAVA-4816
The current implementation of
ObjectId
parseHexString
is somewhat slow, because it makes a total of 12 calls toInteger.parseInt
, which is not the fastest to begin with. This imposes some overhead to allObjectId(string)
calls, which can really add up at scale, for example when deserializing a large amount of ObjectId data via Jackson.Replacing this implementation with a hand-rolled version which converts each part of the hex string to a byte. This in my rough testing is about 5x faster than the current implementation of
parseHexString
.Tests (on my M1 MacBook Pro):
On master:
On branch: