Do not use context manager for connection pool borrowing #51
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.
Turns out at this micro-optimization level a context manager is quite expensive. It builds an object to encapsulate the context and that adds gc pressure on top of overall slowness. Removing this provides 0.6-0.8us ~10% improvement and softens gc latency spikes in production.
Before:
multithreaded: Overall: 135509.96 RPS / 7.38 us/req
singlethreaded: Overall: 137630.69 RPS / 7.27 us/req
After:
multithreaded: Overall: 151058.43 RPS / 6.62 us/req
singlethreaded: Overall: 151288.67 RPS / 6.61 us/req
Before:


After: