Skip to content

Conversation

@adam-fowler
Copy link
Collaborator

Replace ByteBuffer with RESPBulkString as return type from commands that return a bulk string

  • Had to rename an internal symbol that was used to render bulk strings to RESPRenderableBulkString.
  • All relevant commands return RESPBulkString instead of ByteBuffer
  • Subscriptions return a RESPBulkString for their value
  • All custom command responses use RESPBulkString where applicable

@github-actions
Copy link

github-actions bot commented Dec 4, 2025

✅ Pull request no significant performance differences ✅

Summary

New baseline 'pull_request' is WITHIN the 'main' baseline thresholds.

Full Benchmark Comparison

Comparing results between 'main' and 'pull_request'

Host '14663cbb73e2' with 4 'x86_64' processors with 15 GB memory, running:
#18~24.04.1-Ubuntu SMP Sat Jun 28 04:46:03 UTC 2025

ValkeyBenchmarks

Client: GET benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 75 76 81 82 84 84 84 6
pull_request 75 78 79 80 83 83 83 6
Δ 0 2 -2 -2 -1 -1 -1 0
Improvement % 0 -3 2 2 1 1 1 0

Client: GET benchmark | parallel 20 | 20 concurrent connections metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 72 75 78 83 87 91 91 28
pull_request 74 76 80 81 82 83 83 28
Δ 2 1 2 -2 -5 -8 -8 0
Improvement % -3 -1 -3 2 6 9 9 0

Connection: GET benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 4 4 4 4 4 4 4 8
pull_request 4 4 4 4 4 4 4 8
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

Connection: GET benchmark – NoOpTracer metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 7 8 8 10 11 11 11 8
pull_request 7 8 8 10 11 11 11 8
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

Connection: Pipeline array benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 33 33 33 34 34 34 34 6
pull_request 33 33 33 34 34 34 34 6
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

Connection: Pipeline benchmark metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 33 33 33 34 34 34 34 6
pull_request 33 33 33 34 34 34 34 6
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

HashSlot – {user}.whatever metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 18
pull_request 0 0 0 0 0 0 0 18
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

ValkeyCommandEncoder – Command with 7 words metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 741
pull_request 0 0 0 0 0 0 0 731
Δ 0 0 0 0 0 0 0 -10
Improvement % 0 0 0 0 0 0 0 -10

ValkeyCommandEncoder – Simple GET metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 1886
pull_request 0 0 0 0 0 0 0 1871
Δ 0 0 0 0 0 0 0 -15
Improvement % 0 0 0 0 0 0 0 -15

ValkeyCommandEncoder – Simple MGET 15 keys metrics

Malloc (total): results within specified thresholds, fold down for details.

Malloc (total) * p0 p25 p50 p75 p90 p99 p100 Samples
main 0 0 0 0 0 0 0 357
pull_request 0 0 0 0 0 0 0 357
Δ 0 0 0 0 0 0 0 0
Improvement % 0 0 0 0 0 0 0 0

Replace ByteBuffer with RESPBulkString as return type from commands that return a bulk string

Signed-off-by: Adam Fowler <[email protected]>
Signed-off-by: Adam Fowler <[email protected]>
Signed-off-by: Adam Fowler <[email protected]>
@fabianfett fabianfett added this to the 1.0 milestone Dec 5, 2025
}
#endif

// These are implemented as no-ops for performance reasons.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you mind linking to an article that explains more about this?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copied from SwiftNIO ByteBufferView

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added comment

Signed-off-by: Adam Fowler <[email protected]>
@adam-fowler adam-fowler enabled auto-merge (squash) December 5, 2025 12:06
@adam-fowler adam-fowler merged commit dfebc67 into main Dec 5, 2025
14 of 15 checks passed
@adam-fowler adam-fowler deleted the resp-bulk-string branch December 5, 2025 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants