🚀 Optimize JSON-RPC Deserialization Performance with Type Switch Pattern #98
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.
Description:
This PR introduces a significant performance improvement to JSON-RPC message deserialization by replacing the original sequential type-checking approach with a more efficient type switch pattern. The new implementation reduces deserialization overhead through:
2. Structured Common Type: Uses JSONRPCCommon as an intermediate type for type discrimination
3. Optimized Dispatch: Implements a switch-case pattern for message type resolution
Key Improvements:
Performance Benchmark:
goos: darwin
goarch: arm64
pkg: github.com/metoro-io/mcp-golang/transport/stdio/internal/stdio
cpu: Apple M3 Pro
BenchmarkDeserializeMessage-11 132722 9049 ns/op
BenchmarkDeserializeMessage_v2-11 473245 2559 ns/op
PASS
ok github.com/metoro-io/mcp-golang/transport/stdio/internal/stdio 4.024s