refactor: lock-free pool v2 with zero-allocation optimization #5
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.
Refactor: Netpool v2 - Zero Allocation Lock-Free Pool
Summary
This PR completely rewrites
netpoolto be the fastest Go connection pool available.It replaces the previous mutex/map-based implementation with a lock-free design using channels and
atomicoperations.We also introduced a Pass-by-Value optimization for connection wrappers, achieving Zero Allocations and 118ns/op latency (Standard) or 42ns/op (Basic).
Benchmark Results
Improvements:
IdleTimeoutand addedHealthCheckwithout performance cost.Breaking Changes
This release introduces significant API changes to achieve maximum performance.
1. New Config Structure
Functional options (
WithMinPool, etc.) are replaced with a simpleConfigstruct.2. Manual Put Required (No Auto-Return)
Connections returned by
Get()are no longer wrapped with auto-return logic.You MUST call
pool.Put(conn)explicitly.3. Removed Features
Configstruct.