-
-
Notifications
You must be signed in to change notification settings - Fork 147
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prevent duplicate DocChangedEvents in batch processing #1173
Conversation
WalkthroughThe pull request updates two areas. In the client code, added comments in the Changes
Sequence Diagram(s)sequenceDiagram
participant Client as Client
participant Pub as BatchPublisher
participant Map as docChangedCountMap
Client->>Pub: Publish(event: DocChangedEvent)
Note right of Pub: Check if the event is a DocChangedEvent
Pub->>Map: Retrieve current count for publisher ID
alt Count exceeds threshold (>1)
Pub-->>Client: Return early (skip duplicate event)
else Count is acceptable
Map-->>Pub: Return current count
Pub->>Pub: Process and add the DocChangedEvent
end
Note right of Pub: After processing the batch
Pub->>Map: Reset docChangedCountMap
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Go Benchmark Analysis 📊
This is a comparison result between the previous(c7797cf) and the current commit(b1ec942).
Significant Changes (≥20% difference)
Benchmark suite | Previous | Current | Change |
---|---|---|---|
BenchmarkRPC/client_to_client_via_server/ (ns/op) | 771.40 ms | 481.50 ms | 🟢 -37.58% |
BenchmarkRPC/client_to_client_via_server/ (B/op) | 39.09 MB | 24.57 MB | 🟢 -37.15% |
BenchmarkRPC/client_to_client_via_server/ (allocs/op) | 470,568 allocs | 346,888 allocs | 🟢 -26.28% |
BenchmarkDocument/status_test/ (ns/op) | 1334.00 ns | 1067.00 ns | 🟢 -20.01% |
Key Observations 🔍
- The BenchmarkRPC suite showed significant improvements in the
client_to_client_via_server
benchmarks, with a remarkable decrease in execution time, memory usage, and allocations. Theclient_to_client_via_server
benchmarks saw reductions of approximately 37% in execution time, memory, and allocations, indicating substantial performance enhancements. - In the BenchmarkDocument suite, the
status_test
benchmark demonstrated a 20% decrease in execution time, showcasing improved efficiency in the status related operations. - Overall, the majority of benchmarks across different suites showed either minor improvements or remained relatively stable in terms of performance metrics. Notable decreases were observed in various benchmarks for different suites, indicating positive optimizations in processing times, memory usage, and allocation efficiency.
Detailed Test Results
BenchmarkDocument
Benchmark suite | Previous | Current | Change |
---|---|---|---|
constructor_test/ (ns/op) | 1472.00 ns | 1474.00 ns | 🔴 +0.14% |
constructor_test/ (B/op) | 1.43 KB | 1.43 KB | ⚪ 0% |
constructor_test/ (allocs/op) | 25 allocs | 25 allocs | ⚪ 0% |
status_test/ (ns/op) | 1334.00 ns | 1067.00 ns | 🟢 -20.01% |
status_test/ (B/op) | 1.40 KB | 1.40 KB | ⚪ 0% |
status_test/ (allocs/op) | 23 allocs | 23 allocs | ⚪ 0% |
equals_test/ (ns/op) | 7938.00 ns | 7863.00 ns | 🟢 -0.94% |
equals_test/ (B/op) | 7.71 KB | 7.71 KB | ⚪ 0% |
equals_test/ (allocs/op) | 132 allocs | 132 allocs | ⚪ 0% |
nested_update_test/ (ns/op) | 17081.00 ns | 17042.00 ns | 🟢 -0.23% |
nested_update_test/ (B/op) | 12.36 KB | 12.36 KB | ⚪ 0% |
nested_update_test/ (allocs/op) | 259 allocs | 259 allocs | ⚪ 0% |
delete_test/ (ns/op) | 22790.00 ns | 22783.00 ns | 🟢 -0.03% |
delete_test/ (B/op) | 15.84 KB | 15.84 KB | ⚪ 0% |
delete_test/ (allocs/op) | 340 allocs | 340 allocs | ⚪ 0% |
object_test/ (ns/op) | 8539.00 ns | 8530.00 ns | 🟢 -0.11% |
object_test/ (B/op) | 7.08 KB | 7.08 KB | 🔴 +0.01% |
object_test/ (allocs/op) | 119 allocs | 119 allocs | ⚪ 0% |
array_test/ (ns/op) | 28405.00 ns | 31877.00 ns | 🔴 +12.22% |
array_test/ (B/op) | 12.19 KB | 12.19 KB | ⚪ 0% |
array_test/ (allocs/op) | 274 allocs | 274 allocs | ⚪ 0% |
text_test/ (ns/op) | 31656.00 ns | 32601.00 ns | 🔴 +2.99% |
text_test/ (B/op) | 15.24 KB | 15.24 KB | ⚪ 0% |
text_test/ (allocs/op) | 485 allocs | 485 allocs | ⚪ 0% |
text_composition_test/ (ns/op) | 31389.00 ns | 31556.00 ns | 🔴 +0.53% |
text_composition_test/ (B/op) | 18.75 KB | 18.75 KB | ⚪ 0% |
text_composition_test/ (allocs/op) | 502 allocs | 502 allocs | ⚪ 0% |
rich_text_test/ (ns/op) | 86962.00 ns | 84649.00 ns | 🟢 -2.66% |
rich_text_test/ (B/op) | 39.41 KB | 39.40 KB | ⚪ 0% |
rich_text_test/ (allocs/op) | 1,147 allocs | 1,147 allocs | ⚪ 0% |
counter_test/ (ns/op) | 18075.00 ns | 18249.00 ns | 🔴 +0.96% |
counter_test/ (B/op) | 11.86 KB | 11.86 KB | ⚪ 0% |
counter_test/ (allocs/op) | 254 allocs | 254 allocs | ⚪ 0% |
text_edit_gc_100/ (ns/op) | 1.38 ms | 1.37 ms | 🟢 -0.80% |
text_edit_gc_100/ (B/op) | 864.90 KB | 865.00 KB | 🔴 +0.01% |
text_edit_gc_100/ (allocs/op) | 17,282 allocs | 17,283 allocs | ⚪ 0% |
text_edit_gc_1000/ (ns/op) | 52.51 ms | 52.19 ms | 🟢 -0.61% |
text_edit_gc_1000/ (B/op) | 46.84 MB | 46.84 MB | ⚪ 0% |
text_edit_gc_1000/ (allocs/op) | 185,593 allocs | 185,599 allocs | ⚪ 0% |
text_split_gc_100/ (ns/op) | 2.09 ms | 2.07 ms | 🟢 -1.23% |
text_split_gc_100/ (B/op) | 1.58 MB | 1.58 MB | ⚪ 0% |
text_split_gc_100/ (allocs/op) | 15,952 allocs | 15,952 allocs | ⚪ 0% |
text_split_gc_1000/ (ns/op) | 127.97 ms | 128.60 ms | 🔴 +0.49% |
text_split_gc_1000/ (B/op) | 137.79 MB | 137.79 MB | ⚪ 0% |
text_split_gc_1000/ (allocs/op) | 184,998 allocs | 184,990 allocs | ⚪ 0% |
text_delete_all_10000/ (ns/op) | 16.81 ms | 17.29 ms | 🔴 +2.85% |
text_delete_all_10000/ (B/op) | 10.58 MB | 10.58 MB | 🔴 +0.01% |
text_delete_all_10000/ (allocs/op) | 56,138 allocs | 56,139 allocs | ⚪ 0% |
text_delete_all_100000/ (ns/op) | 290.19 ms | 265.14 ms | 🟢 -8.63% |
text_delete_all_100000/ (B/op) | 105.54 MB | 105.52 MB | 🟢 -0.02% |
text_delete_all_100000/ (allocs/op) | 566,122 allocs | 566,057 allocs | 🟢 -0.01% |
text_100/ (ns/op) | 228221.00 ns | 240069.00 ns | 🔴 +5.19% |
text_100/ (B/op) | 120.95 KB | 120.99 KB | 🔴 +0.03% |
text_100/ (allocs/op) | 5,182 allocs | 5,182 allocs | ⚪ 0% |
text_1000/ (ns/op) | 2.43 ms | 2.50 ms | 🔴 +2.96% |
text_1000/ (B/op) | 1.16 MB | 1.16 MB | ⚪ 0% |
text_1000/ (allocs/op) | 51,085 allocs | 51,085 allocs | ⚪ 0% |
array_1000/ (ns/op) | 1.24 ms | 1.27 ms | 🔴 +2.99% |
array_1000/ (B/op) | 1.09 MB | 1.09 MB | 🔴 +0.02% |
array_1000/ (allocs/op) | 11,880 allocs | 11,880 allocs | ⚪ 0% |
array_10000/ (ns/op) | 13.36 ms | 13.54 ms | 🔴 +1.38% |
array_10000/ (B/op) | 9.89 MB | 9.89 MB | 🟢 -0.01% |
array_10000/ (allocs/op) | 120,736 allocs | 120,730 allocs | ⚪ 0% |
array_gc_100/ (ns/op) | 131033.00 ns | 136677.00 ns | 🔴 +4.31% |
array_gc_100/ (B/op) | 99.93 KB | 99.93 KB | ⚪ 0% |
array_gc_100/ (allocs/op) | 1,267 allocs | 1,267 allocs | ⚪ 0% |
array_gc_1000/ (ns/op) | 1.41 ms | 1.46 ms | 🔴 +3.52% |
array_gc_1000/ (B/op) | 1.14 MB | 1.14 MB | ⚪ 0% |
array_gc_1000/ (allocs/op) | 12,927 allocs | 12,927 allocs | ⚪ 0% |
counter_1000/ (ns/op) | 199973.00 ns | 211508.00 ns | 🔴 +5.77% |
counter_1000/ (B/op) | 178.18 KB | 178.18 KB | ⚪ 0% |
counter_1000/ (allocs/op) | 5,772 allocs | 5,772 allocs | ⚪ 0% |
counter_10000/ (ns/op) | 2.14 ms | 2.19 ms | 🔴 +2.44% |
counter_10000/ (B/op) | 2.07 MB | 2.07 MB | ⚪ 0% |
counter_10000/ (allocs/op) | 59,779 allocs | 59,779 allocs | ⚪ 0% |
object_1000/ (ns/op) | 1.41 ms | 1.46 ms | 🔴 +3.44% |
object_1000/ (B/op) | 1.44 MB | 1.44 MB | ⚪ 0% |
object_1000/ (allocs/op) | 9,926 allocs | 9,926 allocs | ⚪ 0% |
object_10000/ (ns/op) | 14.97 ms | 14.60 ms | 🟢 -2.46% |
object_10000/ (B/op) | 12.35 MB | 12.35 MB | ⚪ 0% |
object_10000/ (allocs/op) | 101,232 allocs | 101,233 allocs | ⚪ 0% |
tree_100/ (ns/op) | 1.04 ms | 1.07 ms | 🔴 +3.58% |
tree_100/ (B/op) | 951.08 KB | 951.08 KB | ⚪ 0% |
tree_100/ (allocs/op) | 6,103 allocs | 6,103 allocs | ⚪ 0% |
tree_1000/ (ns/op) | 74.45 ms | 79.33 ms | 🔴 +6.56% |
tree_1000/ (B/op) | 86.58 MB | 86.58 MB | ⚪ 0% |
tree_1000/ (allocs/op) | 60,113 allocs | 60,112 allocs | ⚪ 0% |
tree_10000/ (ns/op) | 9.39 s | 9.59 s | 🔴 +2.18% |
tree_10000/ (B/op) | 8.58 GB | 8.58 GB | ⚪ 0% |
tree_10000/ (allocs/op) | 600,205 allocs | 600,196 allocs | ⚪ 0% |
tree_delete_all_1000/ (ns/op) | 77.01 ms | 79.71 ms | 🔴 +3.50% |
tree_delete_all_1000/ (B/op) | 87.57 MB | 87.57 MB | ⚪ 0% |
tree_delete_all_1000/ (allocs/op) | 75,291 allocs | 75,291 allocs | ⚪ 0% |
tree_edit_gc_100/ (ns/op) | 3.83 ms | 3.97 ms | 🔴 +3.63% |
tree_edit_gc_100/ (B/op) | 4.15 MB | 4.15 MB | ⚪ 0% |
tree_edit_gc_100/ (allocs/op) | 15,147 allocs | 15,147 allocs | ⚪ 0% |
tree_edit_gc_1000/ (ns/op) | 314.96 ms | 326.53 ms | 🔴 +3.67% |
tree_edit_gc_1000/ (B/op) | 384.04 MB | 384.04 MB | ⚪ 0% |
tree_edit_gc_1000/ (allocs/op) | 154,937 allocs | 154,941 allocs | ⚪ 0% |
tree_split_gc_100/ (ns/op) | 2.59 ms | 2.75 ms | 🔴 +5.93% |
tree_split_gc_100/ (B/op) | 2.41 MB | 2.41 MB | ⚪ 0% |
tree_split_gc_100/ (allocs/op) | 11,132 allocs | 11,132 allocs | ⚪ 0% |
tree_split_gc_1000/ (ns/op) | 189.14 ms | 204.27 ms | 🔴 +8.00% |
tree_split_gc_1000/ (B/op) | 222.50 MB | 222.50 MB | ⚪ 0% |
tree_split_gc_1000/ (allocs/op) | 122,064 allocs | 122,078 allocs | 🔴 +0.01% |
BenchmarkRPC
Benchmark suite | Previous | Current | Change |
---|---|---|---|
client_to_server/ (ns/op) | 420.53 ms | 414.48 ms | 🟢 -1.44% |
client_to_server/ (B/op) | 17.87 MB | 16.13 MB | 🟢 -9.71% |
client_to_server/ (allocs/op) | 223,725 allocs | 223,543 allocs | 🟢 -0.08% |
client_to_client_via_server/ (ns/op) | 771.40 ms | 481.50 ms | 🟢 -37.58% |
client_to_client_via_server/ (B/op) | 39.09 MB | 24.57 MB | 🟢 -37.15% |
client_to_client_via_server/ (allocs/op) | 470,568 allocs | 346,888 allocs | 🟢 -26.28% |
attach_large_document/ (ns/op) | 1.26 s | 1.29 s | 🔴 +2.43% |
attach_large_document/ (B/op) | 1.90 GB | 1.89 GB | 🟢 -0.64% |
attach_large_document/ (allocs/op) | 12,439 allocs | 12,118 allocs | 🟢 -2.58% |
adminCli_to_server/ (ns/op) | 543.02 ms | 537.10 ms | 🟢 -1.09% |
adminCli_to_server/ (B/op) | 21.30 MB | 21.31 MB | 🔴 +0.02% |
adminCli_to_server/ (allocs/op) | 316,652 allocs | 316,679 allocs | ⚪ 0% |
BenchmarkLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 85.81 ns | 79.81 ns | 🟢 -6.99% |
(B/op) | 32.00 B | 32.00 B | ⚪ 0% |
(allocs/op) | 1 allocs | 1 allocs | ⚪ 0% |
BenchmarkLockerParallel
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 45.89 ns | 44.75 ns | 🟢 -2.48% |
(B/op) | 0.00 B | 0.00 B | ⚪ 0% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkLockerMoreKeys
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 187.90 ns | 174.30 ns | 🟢 -7.24% |
(B/op) | 30.00 B | 31.00 B | 🔴 +3.33% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkRWLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
RWLock_rate_2/ (ns/op) | 50.93 ns | 48.96 ns | 🟢 -3.87% |
RWLock_rate_2/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_2/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_10/ (ns/op) | 45.77 ns | 42.67 ns | 🟢 -6.77% |
RWLock_rate_10/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_10/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_100/ (ns/op) | 61.23 ns | 57.91 ns | 🟢 -5.42% |
RWLock_rate_100/ (B/op) | 2.00 B | 2.00 B | ⚪ 0% |
RWLock_rate_100/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_1000/ (ns/op) | 89.26 ns | 87.21 ns | 🟢 -2.30% |
RWLock_rate_1000/ (B/op) | 8.00 B | 8.00 B | ⚪ 0% |
RWLock_rate_1000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkChange
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_10_Changes/ (ns/op) | 4.49 ms | 4.43 ms | 🟢 -1.33% |
Push_10_Changes/ (B/op) | 150.94 KB | 150.63 KB | 🟢 -0.21% |
Push_10_Changes/ (allocs/op) | 1,625 allocs | 1,625 allocs | ⚪ 0% |
Push_100_Changes/ (ns/op) | 16.40 ms | 15.76 ms | 🟢 -3.90% |
Push_100_Changes/ (B/op) | 776.10 KB | 772.20 KB | 🟢 -0.50% |
Push_100_Changes/ (allocs/op) | 8,511 allocs | 8,511 allocs | ⚪ 0% |
Push_1000_Changes/ (ns/op) | 131.30 ms | 127.32 ms | 🟢 -3.03% |
Push_1000_Changes/ (B/op) | 7.18 MB | 7.30 MB | 🔴 +1.66% |
Push_1000_Changes/ (allocs/op) | 79,325 allocs | 79,326 allocs | ⚪ 0% |
Pull_10_Changes/ (ns/op) | 3.69 ms | 3.62 ms | 🟢 -1.79% |
Pull_10_Changes/ (B/op) | 124.60 KB | 124.96 KB | 🔴 +0.29% |
Pull_10_Changes/ (allocs/op) | 1,454 allocs | 1,454 allocs | ⚪ 0% |
Pull_100_Changes/ (ns/op) | 5.26 ms | 5.17 ms | 🟢 -1.63% |
Pull_100_Changes/ (B/op) | 354.65 KB | 355.55 KB | 🔴 +0.25% |
Pull_100_Changes/ (allocs/op) | 5,180 allocs | 5,179 allocs | 🟢 -0.02% |
Pull_1000_Changes/ (ns/op) | 10.49 ms | 10.72 ms | 🔴 +2.12% |
Pull_1000_Changes/ (B/op) | 2.20 MB | 2.20 MB | 🟢 -0.11% |
Pull_1000_Changes/ (allocs/op) | 44,680 allocs | 44,680 allocs | ⚪ 0% |
BenchmarkSnapshot
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_3KB_snapshot/ (ns/op) | 18.53 ms | 17.92 ms | 🟢 -3.29% |
Push_3KB_snapshot/ (B/op) | 902.00 KB | 898.59 KB | 🟢 -0.38% |
Push_3KB_snapshot/ (allocs/op) | 8,514 allocs | 8,512 allocs | 🟢 -0.02% |
Push_30KB_snapshot/ (ns/op) | 132.49 ms | 131.02 ms | 🟢 -1.12% |
Push_30KB_snapshot/ (B/op) | 8.01 MB | 8.33 MB | 🔴 +3.95% |
Push_30KB_snapshot/ (allocs/op) | 86,458 allocs | 89,964 allocs | 🔴 +4.06% |
Pull_3KB_snapshot/ (ns/op) | 7.36 ms | 7.25 ms | 🟢 -1.49% |
Pull_3KB_snapshot/ (B/op) | 1.06 MB | 1.06 MB | 🔴 +0.16% |
Pull_3KB_snapshot/ (allocs/op) | 19,256 allocs | 19,260 allocs | 🔴 +0.02% |
Pull_30KB_snapshot/ (ns/op) | 19.29 ms | 17.97 ms | 🟢 -6.85% |
Pull_30KB_snapshot/ (B/op) | 8.77 MB | 8.75 MB | 🟢 -0.16% |
Pull_30KB_snapshot/ (allocs/op) | 185,629 allocs | 185,664 allocs | 🔴 +0.02% |
BenchmarkSplayTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
stress_test_100000/ (ns/op) | 0.20 ns | 0.19 ns | 🟢 -3.58% |
stress_test_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_200000/ (ns/op) | 0.38 ns | 0.37 ns | 🟢 -4.03% |
stress_test_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_300000/ (ns/op) | 0.60 ns | 0.57 ns | 🟢 -5.95% |
stress_test_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_100000/ (ns/op) | 0.01 ns | 0.01 ns | 🟢 -5.15% |
random_access_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_200000/ (ns/op) | 0.03 ns | 0.03 ns | 🔴 +11.32% |
random_access_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_300000/ (ns/op) | 0.04 ns | 0.04 ns | 🔴 +4.37% |
random_access_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
editing_trace_bench/ (ns/op) | 0.00 ns | 0.00 ns | 🟢 -3.59% |
editing_trace_bench/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
editing_trace_bench/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkSync
Benchmark suite | Previous | Current | Change |
---|---|---|---|
memory_sync_10_test/ (ns/op) | 7057.00 ns | 6904.00 ns | 🟢 -2.17% |
memory_sync_10_test/ (B/op) | 1.34 KB | 1.34 KB | 🟢 -0.07% |
memory_sync_10_test/ (allocs/op) | 35 allocs | 35 allocs | ⚪ 0% |
memory_sync_100_test/ (ns/op) | 54760.00 ns | 54176.00 ns | 🟢 -1.07% |
memory_sync_100_test/ (B/op) | 9.53 KB | 9.51 KB | 🟢 -0.24% |
memory_sync_100_test/ (allocs/op) | 269 allocs | 268 allocs | 🟢 -0.37% |
memory_sync_1000_test/ (ns/op) | 617621.00 ns | 615047.00 ns | 🟢 -0.42% |
memory_sync_1000_test/ (B/op) | 75.63 KB | 75.30 KB | 🟢 -0.44% |
memory_sync_1000_test/ (allocs/op) | 2,103 allocs | 2,093 allocs | 🟢 -0.48% |
memory_sync_10000_test/ (ns/op) | 7.83 ms | 7.90 ms | 🔴 +0.83% |
memory_sync_10000_test/ (B/op) | 752.23 KB | 753.67 KB | 🔴 +0.19% |
memory_sync_10000_test/ (allocs/op) | 20,417 allocs | 20,431 allocs | 🔴 +0.07% |
BenchmarkTextEditing
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 5.20 s | 5.11 s | 🟢 -1.69% |
(B/op) | 3.92 GB | 3.92 GB | ⚪ 0% |
(allocs/op) | 20,619,784 allocs | 20,619,832 allocs | ⚪ 0% |
BenchmarkTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
10000_vertices_to_protobuf/ (ns/op) | 4.29 ms | 4.24 ms | 🟢 -1.23% |
10000_vertices_to_protobuf/ (B/op) | 6.36 MB | 6.36 MB | ⚪ 0% |
10000_vertices_to_protobuf/ (allocs/op) | 70,025 allocs | 70,025 allocs | ⚪ 0% |
10000_vertices_from_protobuf/ (ns/op) | 222.46 ms | 221.04 ms | 🟢 -0.64% |
10000_vertices_from_protobuf/ (B/op) | 442.31 MB | 442.30 MB | ⚪ 0% |
10000_vertices_from_protobuf/ (allocs/op) | 290,039 allocs | 290,058 allocs | ⚪ 0% |
20000_vertices_to_protobuf/ (ns/op) | 9.14 ms | 8.71 ms | 🟢 -4.71% |
20000_vertices_to_protobuf/ (B/op) | 12.89 MB | 12.89 MB | ⚪ 0% |
20000_vertices_to_protobuf/ (allocs/op) | 140,028 allocs | 140,028 allocs | ⚪ 0% |
20000_vertices_from_protobuf/ (ns/op) | 877.37 ms | 860.56 ms | 🟢 -1.92% |
20000_vertices_from_protobuf/ (B/op) | 1.70 GB | 1.70 GB | ⚪ 0% |
20000_vertices_from_protobuf/ (allocs/op) | 580,090 allocs | 580,044 allocs | ⚪ 0% |
30000_vertices_to_protobuf/ (ns/op) | 13.15 ms | 13.43 ms | 🔴 +2.14% |
30000_vertices_to_protobuf/ (B/op) | 18.98 MB | 18.98 MB | ⚪ 0% |
30000_vertices_to_protobuf/ (allocs/op) | 210,029 allocs | 210,030 allocs | ⚪ 0% |
30000_vertices_from_protobuf/ (ns/op) | 2.02 s | 1.97 s | 🟢 -2.28% |
30000_vertices_from_protobuf/ (B/op) | 3.75 GB | 3.75 GB | ⚪ 0% |
30000_vertices_from_protobuf/ (allocs/op) | 870,086 allocs | 870,051 allocs | ⚪ 0% |
BenchmarkVersionVector
Benchmark suite | Previous | Current | Change |
---|---|---|---|
clients_10/ (ns/op) | 157.85 ms | 156.70 ms | 🟢 -0.73% |
clients_10/ (1_changepack(bytes)) | 745.00 B | 745.00 B | ⚪ 0% |
clients_10/ (2_snapshot(bytes)) | 379.00 B | 379.00 B | ⚪ 0% |
clients_10/ (3_pushpull(ms)) | 7.00 ms | 7.00 ms | ⚪ 0% |
clients_10/ (4_attach(ms)) | 6.00 ms | 6.00 ms | ⚪ 0% |
clients_10/ (5_changepack_after_detach(bytes)) | 805.00 B | 805.00 B | ⚪ 0% |
clients_10/ (6_snapshot_after_detach(bytes)) | 136.00 B | 136.00 B | ⚪ 0% |
clients_10/ (7_pushpull_after_detach(ms)) | 8.00 ms | 8.00 ms | ⚪ 0% |
clients_10/ (B/op) | 20.71 MB | 20.70 MB | 🟢 -0.05% |
clients_10/ (allocs/op) | 83,248 allocs | 83,241 allocs | ⚪ 0% |
clients_100/ (ns/op) | 1.39 s | 1.37 s | 🟢 -1.26% |
clients_100/ (1_changepack(bytes)) | 6.14 KB | 6.14 KB | ⚪ 0% |
clients_100/ (2_snapshot(bytes)) | 3.08 KB | 3.08 KB | ⚪ 0% |
clients_100/ (3_pushpull(ms)) | 11.00 ms | 11.00 ms | ⚪ 0% |
clients_100/ (4_attach(ms)) | 9.00 ms | 9.00 ms | ⚪ 0% |
clients_100/ (5_changepack_after_detach(bytes)) | 6.21 KB | 6.21 KB | ⚪ 0% |
clients_100/ (6_snapshot_after_detach(bytes)) | 137.00 B | 137.00 B | ⚪ 0% |
clients_100/ (7_pushpull_after_detach(ms)) | 9.00 ms | 10.00 ms | 🔴 +11.11% |
clients_100/ (B/op) | 213.58 MB | 210.99 MB | 🟢 -1.21% |
clients_100/ (allocs/op) | 1,481,342 allocs | 1,481,082 allocs | 🟢 -0.02% |
clients_1000/ (ns/op) | 42.35 s | 41.79 s | 🟢 -1.33% |
clients_1000/ (1_changepack(bytes)) | 60.16 KB | 60.16 KB | ⚪ 0% |
clients_1000/ (2_snapshot(bytes)) | 30.08 KB | 30.08 KB | ⚪ 0% |
clients_1000/ (3_pushpull(ms)) | 116.00 ms | 113.00 ms | 🟢 -2.59% |
clients_1000/ (4_attach(ms)) | 72.00 ms | 73.00 ms | 🔴 +1.39% |
clients_1000/ (5_changepack_after_detach(bytes)) | 60.22 KB | 60.22 KB | ⚪ 0% |
clients_1000/ (6_snapshot_after_detach(bytes)) | 139.00 B | 139.00 B | ⚪ 0% |
clients_1000/ (7_pushpull_after_detach(ms)) | 27.00 ms | 22.00 ms | 🟢 -18.52% |
clients_1000/ (B/op) | 6.43 GB | 6.43 GB | ⚪ 0% |
clients_1000/ (allocs/op) | 93,354,528 allocs | 93,354,503 allocs | ⚪ 0% |
8e87c33
to
51705cd
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Go Benchmark Analysis 📊
This is a comparison result between the previous(c7797cf) and the current commit(19bfc28).
Significant Changes (≥20% difference)
Benchmark suite | Previous | Current | Change |
---|---|---|---|
BenchmarkRPC/client_to_client_via_server/ (ns/op) | 771.40 ms | 504.69 ms | 🟢 -34.57% |
BenchmarkRPC/client_to_client_via_server/ (B/op) | 39.09 MB | 26.06 MB | 🟢 -33.34% |
BenchmarkRPC/client_to_client_via_server/ (allocs/op) | 470,568 allocs | 323,612 allocs | 🟢 -31.23% |
BenchmarkVersionVector/clients_1000/ (7_pushpull_after_detach(ms)) | 27.00 ms | 21.00 ms | 🟢 -22.22% |
Key Observations 🔍
- The benchmark suite
BenchmarkVersionVector/clients_1000/
showed a significant improvement in the7_pushpull_after_detach(ms)
metric, decreasing by approximately 22.22%. This indicates a notable performance enhancement in client operations after detaching. - In the overall analysis of the data, several benchmarks across different suites demonstrated improvements ranging from 0.13% to 34.57%. These improvements were primarily seen in the reduction of time taken for operations (
ns/op
) and memory consumption (B/op
), reflecting enhanced efficiency. - A few benchmarks, such as in
BenchmarkTextEditing
andBenchmarkVersionVector
, experienced minor increases in performance metrics, indicating potential areas for optimization in specific test scenarios.
Clock Analysis
Lamport (v0.5.2)
Metric | 10 clients | 100 clients | 1000 clients |
---|---|---|---|
Total Operation Time | 84.96 ms | 793.94 ms | 34.79 s |
Memory Allocations | 35.11 MB | 219.92 MB | 4.91 GB |
Number of Allocations (allocs/op) | 69,271 | 1,246,728 | 81,485,288 |
ChangePack Size | 138.0 B | 137.0 B | 141.0 B |
Snapshot Size | 379.0 B | 3.08 KB | 30.08 KB |
Push-Pull Time | 2.0 ms | 1.5 ms | 4.0 ms |
Attach Time | 4.5 ms | 11.0 ms | 31.0 ms |
ChangePack After Detach | 138.0 B | 140.0 B | 141.0 B |
Snapshot After Detach | 136.0 B | 137.0 B | 139.0 B |
Push-Pull After Detach | 2.5 ms | 5.0 ms | 9.5 ms |
VV (current)
Metric | 10 clients | 100 clients | 1000 clients |
---|---|---|---|
Total Operation Time | 158.34 ms | 1.40 s | 42.59 s |
Memory Allocations | 20.95 MB | 217.59 MB | 6.43 GB |
Number of Allocations (allocs/op) | 83,272 | 1,481,562 | 93,354,434 |
ChangePack Size | 745.00 B | 6.14 KB | 60.16 KB |
Snapshot Size | 379.00 B | 3.08 KB | 30.08 KB |
Push-Pull Time | 8.00 ms | 10.00 ms | 21.00 ms |
Attach Time | 6.00 ms | 9.00 ms | 71.00 ms |
ChangePack After Detach | 805.00 B | 6.21 KB | 60.22 KB |
Snapshot After Detach | 136.00 B | 137.00 B | 139.00 B |
Push-Pull After Detach | 8.00 ms | 10.00 ms | 21.00 ms |
Summary
- The Lamport clock generally performs better in terms of total operation time across all client scenarios compared to the Version Vector clock.
- In terms of memory allocations, the Lamport clock shows higher memory footprint as the number of clients increases, whereas the Version Vector clock shows a more varied increase in memory usage.
- The number of allocations per operation is significantly lower in the Lamport clock compared to the Version Vector clock, especially as the number of clients increases.
- ChangePack size is consistently smaller in the Lamport clock than in the Version Vector clock across all client scenarios.
- The Lamport clock generally outperforms in push-pull time compared to the Version Vector clock.
- However, the Version Vector clock shows improvements in attach time after detach, maintaining a similar or lower time compared to the Lamport clock.
- The Version Vector clock showcases better performance in push-pull after detach, especially with 1000 clients, where it demonstrates a significant improvement over the Lamport clock.
Detailed Test Results
BenchmarkDocument
Benchmark suite | Previous | Current | Change |
---|---|---|---|
constructor_test/ (ns/op) | 1472.00 ns | 1464.00 ns | 🟢 -0.54% |
constructor_test/ (B/op) | 1.43 KB | 1.43 KB | ⚪ 0% |
constructor_test/ (allocs/op) | 25 allocs | 25 allocs | ⚪ 0% |
status_test/ (ns/op) | 1334.00 ns | 1080.00 ns | 🟢 -19.04% |
status_test/ (B/op) | 1.40 KB | 1.40 KB | ⚪ 0% |
status_test/ (allocs/op) | 23 allocs | 23 allocs | ⚪ 0% |
equals_test/ (ns/op) | 7938.00 ns | 7900.00 ns | 🟢 -0.48% |
equals_test/ (B/op) | 7.71 KB | 7.71 KB | ⚪ 0% |
equals_test/ (allocs/op) | 132 allocs | 132 allocs | ⚪ 0% |
nested_update_test/ (ns/op) | 17081.00 ns | 16894.00 ns | 🟢 -1.09% |
nested_update_test/ (B/op) | 12.36 KB | 12.36 KB | ⚪ 0% |
nested_update_test/ (allocs/op) | 259 allocs | 259 allocs | ⚪ 0% |
delete_test/ (ns/op) | 22790.00 ns | 22817.00 ns | 🔴 +0.12% |
delete_test/ (B/op) | 15.84 KB | 15.84 KB | ⚪ 0% |
delete_test/ (allocs/op) | 340 allocs | 340 allocs | ⚪ 0% |
object_test/ (ns/op) | 8539.00 ns | 8577.00 ns | 🔴 +0.45% |
object_test/ (B/op) | 7.08 KB | 7.08 KB | 🔴 +0.01% |
object_test/ (allocs/op) | 119 allocs | 119 allocs | ⚪ 0% |
array_test/ (ns/op) | 28405.00 ns | 28463.00 ns | 🔴 +0.20% |
array_test/ (B/op) | 12.19 KB | 12.19 KB | ⚪ 0% |
array_test/ (allocs/op) | 274 allocs | 274 allocs | ⚪ 0% |
text_test/ (ns/op) | 31656.00 ns | 37526.00 ns | 🔴 +18.54% |
text_test/ (B/op) | 15.24 KB | 15.24 KB | ⚪ 0% |
text_test/ (allocs/op) | 485 allocs | 485 allocs | ⚪ 0% |
text_composition_test/ (ns/op) | 31389.00 ns | 31472.00 ns | 🔴 +0.26% |
text_composition_test/ (B/op) | 18.75 KB | 18.75 KB | ⚪ 0% |
text_composition_test/ (allocs/op) | 502 allocs | 502 allocs | ⚪ 0% |
rich_text_test/ (ns/op) | 86962.00 ns | 86539.00 ns | 🟢 -0.49% |
rich_text_test/ (B/op) | 39.41 KB | 39.41 KB | ⚪ 0% |
rich_text_test/ (allocs/op) | 1,147 allocs | 1,147 allocs | ⚪ 0% |
counter_test/ (ns/op) | 18075.00 ns | 18044.00 ns | 🟢 -0.17% |
counter_test/ (B/op) | 11.86 KB | 11.86 KB | ⚪ 0% |
counter_test/ (allocs/op) | 254 allocs | 254 allocs | ⚪ 0% |
text_edit_gc_100/ (ns/op) | 1.38 ms | 1.38 ms | 🟢 -0.42% |
text_edit_gc_100/ (B/op) | 864.90 KB | 864.95 KB | ⚪ 0% |
text_edit_gc_100/ (allocs/op) | 17,282 allocs | 17,283 allocs | ⚪ 0% |
text_edit_gc_1000/ (ns/op) | 52.51 ms | 51.96 ms | 🟢 -1.04% |
text_edit_gc_1000/ (B/op) | 46.84 MB | 46.84 MB | ⚪ 0% |
text_edit_gc_1000/ (allocs/op) | 185,593 allocs | 185,599 allocs | ⚪ 0% |
text_split_gc_100/ (ns/op) | 2.09 ms | 2.09 ms | 🟢 -0.13% |
text_split_gc_100/ (B/op) | 1.58 MB | 1.58 MB | ⚪ 0% |
text_split_gc_100/ (allocs/op) | 15,952 allocs | 15,952 allocs | ⚪ 0% |
text_split_gc_1000/ (ns/op) | 127.97 ms | 128.04 ms | 🔴 +0.06% |
text_split_gc_1000/ (B/op) | 137.79 MB | 137.79 MB | ⚪ 0% |
text_split_gc_1000/ (allocs/op) | 184,998 allocs | 184,996 allocs | ⚪ 0% |
text_delete_all_10000/ (ns/op) | 16.81 ms | 16.95 ms | 🔴 +0.82% |
text_delete_all_10000/ (B/op) | 10.58 MB | 10.58 MB | 🔴 +0.03% |
text_delete_all_10000/ (allocs/op) | 56,138 allocs | 56,146 allocs | 🔴 +0.01% |
text_delete_all_100000/ (ns/op) | 290.19 ms | 262.16 ms | 🟢 -9.66% |
text_delete_all_100000/ (B/op) | 105.54 MB | 105.52 MB | 🟢 -0.02% |
text_delete_all_100000/ (allocs/op) | 566,122 allocs | 566,072 allocs | ⚪ 0% |
text_100/ (ns/op) | 228221.00 ns | 233975.00 ns | 🔴 +2.52% |
text_100/ (B/op) | 120.95 KB | 120.99 KB | 🔴 +0.03% |
text_100/ (allocs/op) | 5,182 allocs | 5,182 allocs | ⚪ 0% |
text_1000/ (ns/op) | 2.43 ms | 2.45 ms | 🔴 +0.75% |
text_1000/ (B/op) | 1.16 MB | 1.16 MB | ⚪ 0% |
text_1000/ (allocs/op) | 51,085 allocs | 51,085 allocs | ⚪ 0% |
array_1000/ (ns/op) | 1.24 ms | 1.24 ms | 🔴 +0.11% |
array_1000/ (B/op) | 1.09 MB | 1.09 MB | ⚪ 0% |
array_1000/ (allocs/op) | 11,880 allocs | 11,880 allocs | ⚪ 0% |
array_10000/ (ns/op) | 13.36 ms | 13.38 ms | 🔴 +0.20% |
array_10000/ (B/op) | 9.89 MB | 9.89 MB | ⚪ 0% |
array_10000/ (allocs/op) | 120,736 allocs | 120,732 allocs | ⚪ 0% |
array_gc_100/ (ns/op) | 131033.00 ns | 132251.00 ns | 🔴 +0.93% |
array_gc_100/ (B/op) | 99.93 KB | 99.94 KB | 🔴 +0.01% |
array_gc_100/ (allocs/op) | 1,267 allocs | 1,267 allocs | ⚪ 0% |
array_gc_1000/ (ns/op) | 1.41 ms | 1.43 ms | 🔴 +1.26% |
array_gc_1000/ (B/op) | 1.14 MB | 1.14 MB | ⚪ 0% |
array_gc_1000/ (allocs/op) | 12,927 allocs | 12,927 allocs | ⚪ 0% |
counter_1000/ (ns/op) | 199973.00 ns | 202552.00 ns | 🔴 +1.29% |
counter_1000/ (B/op) | 178.18 KB | 178.18 KB | ⚪ 0% |
counter_1000/ (allocs/op) | 5,772 allocs | 5,772 allocs | ⚪ 0% |
counter_10000/ (ns/op) | 2.14 ms | 2.17 ms | 🔴 +1.48% |
counter_10000/ (B/op) | 2.07 MB | 2.07 MB | ⚪ 0% |
counter_10000/ (allocs/op) | 59,779 allocs | 59,779 allocs | ⚪ 0% |
object_1000/ (ns/op) | 1.41 ms | 1.41 ms | 🟢 -0.09% |
object_1000/ (B/op) | 1.44 MB | 1.44 MB | ⚪ 0% |
object_1000/ (allocs/op) | 9,926 allocs | 9,926 allocs | ⚪ 0% |
object_10000/ (ns/op) | 14.97 ms | 14.93 ms | 🟢 -0.31% |
object_10000/ (B/op) | 12.35 MB | 12.35 MB | ⚪ 0% |
object_10000/ (allocs/op) | 101,232 allocs | 101,231 allocs | ⚪ 0% |
tree_100/ (ns/op) | 1.04 ms | 1.02 ms | 🟢 -1.20% |
tree_100/ (B/op) | 951.08 KB | 951.08 KB | ⚪ 0% |
tree_100/ (allocs/op) | 6,103 allocs | 6,103 allocs | ⚪ 0% |
tree_1000/ (ns/op) | 74.45 ms | 74.90 ms | 🔴 +0.61% |
tree_1000/ (B/op) | 86.58 MB | 86.58 MB | ⚪ 0% |
tree_1000/ (allocs/op) | 60,113 allocs | 60,113 allocs | ⚪ 0% |
tree_10000/ (ns/op) | 9.39 s | 9.45 s | 🔴 +0.69% |
tree_10000/ (B/op) | 8.58 GB | 8.58 GB | ⚪ 0% |
tree_10000/ (allocs/op) | 600,205 allocs | 600,196 allocs | ⚪ 0% |
tree_delete_all_1000/ (ns/op) | 77.01 ms | 76.55 ms | 🟢 -0.60% |
tree_delete_all_1000/ (B/op) | 87.57 MB | 87.57 MB | ⚪ 0% |
tree_delete_all_1000/ (allocs/op) | 75,291 allocs | 75,290 allocs | ⚪ 0% |
tree_edit_gc_100/ (ns/op) | 3.83 ms | 3.85 ms | 🔴 +0.49% |
tree_edit_gc_100/ (B/op) | 4.15 MB | 4.15 MB | ⚪ 0% |
tree_edit_gc_100/ (allocs/op) | 15,147 allocs | 15,147 allocs | ⚪ 0% |
tree_edit_gc_1000/ (ns/op) | 314.96 ms | 316.88 ms | 🔴 +0.61% |
tree_edit_gc_1000/ (B/op) | 384.04 MB | 384.04 MB | ⚪ 0% |
tree_edit_gc_1000/ (allocs/op) | 154,937 allocs | 154,943 allocs | ⚪ 0% |
tree_split_gc_100/ (ns/op) | 2.59 ms | 2.61 ms | 🔴 +0.76% |
tree_split_gc_100/ (B/op) | 2.41 MB | 2.41 MB | ⚪ 0% |
tree_split_gc_100/ (allocs/op) | 11,132 allocs | 11,132 allocs | ⚪ 0% |
tree_split_gc_1000/ (ns/op) | 189.14 ms | 190.65 ms | 🔴 +0.79% |
tree_split_gc_1000/ (B/op) | 222.50 MB | 222.50 MB | ⚪ 0% |
tree_split_gc_1000/ (allocs/op) | 122,064 allocs | 122,059 allocs | ⚪ 0% |
BenchmarkRPC
Benchmark suite | Previous | Current | Change |
---|---|---|---|
client_to_server/ (ns/op) | 420.53 ms | 418.29 ms | 🟢 -0.53% |
client_to_server/ (B/op) | 17.87 MB | 16.14 MB | 🟢 -9.70% |
client_to_server/ (allocs/op) | 223,725 allocs | 223,539 allocs | 🟢 -0.08% |
client_to_client_via_server/ (ns/op) | 771.40 ms | 504.69 ms | 🟢 -34.57% |
client_to_client_via_server/ (B/op) | 39.09 MB | 26.06 MB | 🟢 -33.34% |
client_to_client_via_server/ (allocs/op) | 470,568 allocs | 323,612 allocs | 🟢 -31.23% |
attach_large_document/ (ns/op) | 1.26 s | 1.27 s | 🔴 +0.73% |
attach_large_document/ (B/op) | 1.90 GB | 1.92 GB | 🔴 +1.24% |
attach_large_document/ (allocs/op) | 12,439 allocs | 12,221 allocs | 🟢 -1.75% |
adminCli_to_server/ (ns/op) | 543.02 ms | 538.75 ms | 🟢 -0.79% |
adminCli_to_server/ (B/op) | 21.30 MB | 21.30 MB | ⚪ 0% |
adminCli_to_server/ (allocs/op) | 316,652 allocs | 316,674 allocs | ⚪ 0% |
BenchmarkLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 85.81 ns | 80.49 ns | 🟢 -6.20% |
(B/op) | 32.00 B | 32.00 B | ⚪ 0% |
(allocs/op) | 1 allocs | 1 allocs | ⚪ 0% |
BenchmarkLockerParallel
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 45.89 ns | 45.05 ns | 🟢 -1.83% |
(B/op) | 0.00 B | 0.00 B | ⚪ 0% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkLockerMoreKeys
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 187.90 ns | 178.10 ns | 🟢 -5.22% |
(B/op) | 30.00 B | 31.00 B | 🔴 +3.33% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkRWLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
RWLock_rate_2/ (ns/op) | 50.93 ns | 49.06 ns | 🟢 -3.67% |
RWLock_rate_2/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_2/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_10/ (ns/op) | 45.77 ns | 43.78 ns | 🟢 -4.35% |
RWLock_rate_10/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_10/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_100/ (ns/op) | 61.23 ns | 59.85 ns | 🟢 -2.25% |
RWLock_rate_100/ (B/op) | 2.00 B | 2.00 B | ⚪ 0% |
RWLock_rate_100/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_1000/ (ns/op) | 89.26 ns | 88.20 ns | 🟢 -1.19% |
RWLock_rate_1000/ (B/op) | 8.00 B | 8.00 B | ⚪ 0% |
RWLock_rate_1000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkChange
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_10_Changes/ (ns/op) | 4.49 ms | 4.46 ms | 🟢 -0.64% |
Push_10_Changes/ (B/op) | 150.94 KB | 150.59 KB | 🟢 -0.23% |
Push_10_Changes/ (allocs/op) | 1,625 allocs | 1,625 allocs | ⚪ 0% |
Push_100_Changes/ (ns/op) | 16.40 ms | 16.41 ms | 🔴 +0.07% |
Push_100_Changes/ (B/op) | 776.10 KB | 785.67 KB | 🔴 +1.23% |
Push_100_Changes/ (allocs/op) | 8,511 allocs | 8,513 allocs | 🔴 +0.02% |
Push_1000_Changes/ (ns/op) | 131.30 ms | 132.06 ms | 🔴 +0.58% |
Push_1000_Changes/ (B/op) | 7.18 MB | 7.19 MB | 🔴 +0.15% |
Push_1000_Changes/ (allocs/op) | 79,325 allocs | 79,326 allocs | ⚪ 0% |
Pull_10_Changes/ (ns/op) | 3.69 ms | 3.67 ms | 🟢 -0.41% |
Pull_10_Changes/ (B/op) | 124.60 KB | 124.65 KB | 🔴 +0.04% |
Pull_10_Changes/ (allocs/op) | 1,454 allocs | 1,454 allocs | ⚪ 0% |
Pull_100_Changes/ (ns/op) | 5.26 ms | 5.24 ms | 🟢 -0.45% |
Pull_100_Changes/ (B/op) | 354.65 KB | 354.95 KB | 🔴 +0.08% |
Pull_100_Changes/ (allocs/op) | 5,180 allocs | 5,180 allocs | ⚪ 0% |
Pull_1000_Changes/ (ns/op) | 10.49 ms | 10.68 ms | 🔴 +1.77% |
Pull_1000_Changes/ (B/op) | 2.20 MB | 2.20 MB | 🔴 +0.07% |
Pull_1000_Changes/ (allocs/op) | 44,680 allocs | 44,684 allocs | ⚪ 0% |
BenchmarkSnapshot
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_3KB_snapshot/ (ns/op) | 18.53 ms | 18.72 ms | 🔴 +1.02% |
Push_3KB_snapshot/ (B/op) | 902.00 KB | 899.30 KB | 🟢 -0.30% |
Push_3KB_snapshot/ (allocs/op) | 8,514 allocs | 8,513 allocs | 🟢 -0.01% |
Push_30KB_snapshot/ (ns/op) | 132.49 ms | 136.93 ms | 🔴 +3.35% |
Push_30KB_snapshot/ (B/op) | 8.01 MB | 8.19 MB | 🔴 +2.25% |
Push_30KB_snapshot/ (allocs/op) | 86,458 allocs | 87,899 allocs | 🔴 +1.67% |
Pull_3KB_snapshot/ (ns/op) | 7.36 ms | 7.28 ms | 🟢 -1.07% |
Pull_3KB_snapshot/ (B/op) | 1.06 MB | 1.06 MB | ⚪ 0% |
Pull_3KB_snapshot/ (allocs/op) | 19,256 allocs | 19,251 allocs | 🟢 -0.03% |
Pull_30KB_snapshot/ (ns/op) | 19.29 ms | 18.87 ms | 🟢 -2.19% |
Pull_30KB_snapshot/ (B/op) | 8.77 MB | 8.77 MB | 🟢 -0.01% |
Pull_30KB_snapshot/ (allocs/op) | 185,629 allocs | 185,670 allocs | 🔴 +0.02% |
BenchmarkSplayTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
stress_test_100000/ (ns/op) | 0.20 ns | 0.19 ns | 🟢 -5.01% |
stress_test_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_200000/ (ns/op) | 0.38 ns | 0.38 ns | 🟢 -1.70% |
stress_test_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_300000/ (ns/op) | 0.60 ns | 0.61 ns | 🔴 +1.86% |
stress_test_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_100000/ (ns/op) | 0.01 ns | 0.01 ns | 🟢 -1.43% |
random_access_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_200000/ (ns/op) | 0.03 ns | 0.03 ns | 🔴 +15.74% |
random_access_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_300000/ (ns/op) | 0.04 ns | 0.04 ns | 🔴 +1.67% |
random_access_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
editing_trace_bench/ (ns/op) | 0.00 ns | 0.00 ns | 🔴 +0.47% |
editing_trace_bench/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
editing_trace_bench/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkSync
Benchmark suite | Previous | Current | Change |
---|---|---|---|
memory_sync_10_test/ (ns/op) | 7057.00 ns | 7134.00 ns | 🔴 +1.09% |
memory_sync_10_test/ (B/op) | 1.34 KB | 1.34 KB | 🟢 -0.07% |
memory_sync_10_test/ (allocs/op) | 35 allocs | 35 allocs | ⚪ 0% |
memory_sync_100_test/ (ns/op) | 54760.00 ns | 55747.00 ns | 🔴 +1.80% |
memory_sync_100_test/ (B/op) | 9.53 KB | 9.50 KB | 🟢 -0.39% |
memory_sync_100_test/ (allocs/op) | 269 allocs | 268 allocs | 🟢 -0.37% |
memory_sync_1000_test/ (ns/op) | 617621.00 ns | 623110.00 ns | 🔴 +0.89% |
memory_sync_1000_test/ (B/op) | 75.63 KB | 76.10 KB | 🔴 +0.62% |
memory_sync_1000_test/ (allocs/op) | 2,103 allocs | 2,115 allocs | 🔴 +0.57% |
memory_sync_10000_test/ (ns/op) | 7.83 ms | 7.64 ms | 🟢 -2.51% |
memory_sync_10000_test/ (B/op) | 752.23 KB | 763.86 KB | 🔴 +1.55% |
memory_sync_10000_test/ (allocs/op) | 20,417 allocs | 20,508 allocs | 🔴 +0.45% |
BenchmarkTextEditing
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 5.20 s | 5.22 s | 🔴 +0.40% |
(B/op) | 3.92 GB | 3.92 GB | ⚪ 0% |
(allocs/op) | 20,619,784 allocs | 20,619,745 allocs | ⚪ 0% |
BenchmarkTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
10000_vertices_to_protobuf/ (ns/op) | 4.29 ms | 4.13 ms | 🟢 -3.76% |
10000_vertices_to_protobuf/ (B/op) | 6.36 MB | 6.36 MB | ⚪ 0% |
10000_vertices_to_protobuf/ (allocs/op) | 70,025 allocs | 70,025 allocs | ⚪ 0% |
10000_vertices_from_protobuf/ (ns/op) | 222.46 ms | 220.49 ms | 🟢 -0.89% |
10000_vertices_from_protobuf/ (B/op) | 442.31 MB | 442.30 MB | ⚪ 0% |
10000_vertices_from_protobuf/ (allocs/op) | 290,039 allocs | 290,039 allocs | ⚪ 0% |
20000_vertices_to_protobuf/ (ns/op) | 9.14 ms | 9.05 ms | 🟢 -0.92% |
20000_vertices_to_protobuf/ (B/op) | 12.89 MB | 12.89 MB | ⚪ 0% |
20000_vertices_to_protobuf/ (allocs/op) | 140,028 allocs | 140,028 allocs | ⚪ 0% |
20000_vertices_from_protobuf/ (ns/op) | 877.37 ms | 891.97 ms | 🔴 +1.66% |
20000_vertices_from_protobuf/ (B/op) | 1.70 GB | 1.70 GB | ⚪ 0% |
20000_vertices_from_protobuf/ (allocs/op) | 580,090 allocs | 580,044 allocs | ⚪ 0% |
30000_vertices_to_protobuf/ (ns/op) | 13.15 ms | 14.13 ms | 🔴 +7.48% |
30000_vertices_to_protobuf/ (B/op) | 18.98 MB | 18.98 MB | ⚪ 0% |
30000_vertices_to_protobuf/ (allocs/op) | 210,029 allocs | 210,029 allocs | ⚪ 0% |
30000_vertices_from_protobuf/ (ns/op) | 2.02 s | 1.98 s | 🟢 -2.02% |
30000_vertices_from_protobuf/ (B/op) | 3.75 GB | 3.75 GB | ⚪ 0% |
30000_vertices_from_protobuf/ (allocs/op) | 870,086 allocs | 870,137 allocs | ⚪ 0% |
BenchmarkVersionVector
Benchmark suite | Previous | Current | Change |
---|---|---|---|
clients_10/ (ns/op) | 157.85 ms | 158.34 ms | 🔴 +0.31% |
clients_10/ (1_changepack(bytes)) | 745.00 B | 745.00 B | ⚪ 0% |
clients_10/ (2_snapshot(bytes)) | 379.00 B | 379.00 B | ⚪ 0% |
clients_10/ (3_pushpull(ms)) | 7.00 ms | 8.00 ms | 🔴 +14.29% |
clients_10/ (4_attach(ms)) | 6.00 ms | 6.00 ms | ⚪ 0% |
clients_10/ (5_changepack_after_detach(bytes)) | 805.00 B | 805.00 B | ⚪ 0% |
clients_10/ (6_snapshot_after_detach(bytes)) | 136.00 B | 136.00 B | ⚪ 0% |
clients_10/ (7_pushpull_after_detach(ms)) | 8.00 ms | 8.00 ms | ⚪ 0% |
clients_10/ (B/op) | 20.71 MB | 20.95 MB | 🔴 +1.14% |
clients_10/ (allocs/op) | 83,248 allocs | 83,272 allocs | 🔴 +0.03% |
clients_100/ (ns/op) | 1.39 s | 1.40 s | 🔴 +0.97% |
clients_100/ (1_changepack(bytes)) | 6.14 KB | 6.14 KB | ⚪ 0% |
clients_100/ (2_snapshot(bytes)) | 3.08 KB | 3.08 KB | ⚪ 0% |
clients_100/ (3_pushpull(ms)) | 11.00 ms | 11.00 ms | ⚪ 0% |
clients_100/ (4_attach(ms)) | 9.00 ms | 9.00 ms | ⚪ 0% |
clients_100/ (5_changepack_after_detach(bytes)) | 6.21 KB | 6.21 KB | ⚪ 0% |
clients_100/ (6_snapshot_after_detach(bytes)) | 137.00 B | 137.00 B | ⚪ 0% |
clients_100/ (7_pushpull_after_detach(ms)) | 9.00 ms | 10.00 ms | 🔴 +11.11% |
clients_100/ (B/op) | 213.58 MB | 217.59 MB | 🔴 +1.88% |
clients_100/ (allocs/op) | 1,481,342 allocs | 1,481,562 allocs | 🔴 +0.01% |
clients_1000/ (ns/op) | 42.35 s | 42.59 s | 🔴 +0.58% |
clients_1000/ (1_changepack(bytes)) | 60.16 KB | 60.16 KB | ⚪ 0% |
clients_1000/ (2_snapshot(bytes)) | 30.08 KB | 30.08 KB | ⚪ 0% |
clients_1000/ (3_pushpull(ms)) | 116.00 ms | 114.00 ms | 🟢 -1.72% |
clients_1000/ (4_attach(ms)) | 72.00 ms | 71.00 ms | 🟢 -1.39% |
clients_1000/ (5_changepack_after_detach(bytes)) | 60.22 KB | 60.22 KB | ⚪ 0% |
clients_1000/ (6_snapshot_after_detach(bytes)) | 139.00 B | 139.00 B | ⚪ 0% |
clients_1000/ (7_pushpull_after_detach(ms)) | 27.00 ms | 21.00 ms | 🟢 -22.22% |
clients_1000/ (B/op) | 6.43 GB | 6.43 GB | 🔴 +0.03% |
clients_1000/ (allocs/op) | 93,354,528 allocs | 93,354,434 allocs | ⚪ 0% |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1173 +/- ##
==========================================
- Coverage 38.28% 38.27% -0.02%
==========================================
Files 171 171
Lines 25775 25793 +18
==========================================
+ Hits 9867 9871 +4
- Misses 15075 15088 +13
- Partials 833 834 +1 ☔ View full report in Codecov by Sentry. |
51705cd
to
988c848
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Go Benchmark Analysis 📊
This is a comparison result between the previous(c7797cf) and the current commit(9fdc840).
Significant Changes (≥20% difference)
Benchmark suite | Previous | Current | Change |
---|---|---|---|
BenchmarkSplayTree/editing_trace_bench/ (ns/op) | 0.00 ns | 0.00 ns | 🔴 +44.01% |
BenchmarkRPC/client_to_client_via_server/ (B/op) | 39.09 MB | 26.60 MB | 🟢 -31.94% |
BenchmarkRPC/client_to_client_via_server/ (ns/op) | 771.40 ms | 526.38 ms | 🟢 -31.76% |
BenchmarkRPC/client_to_client_via_server/ (allocs/op) | 470,568 allocs | 332,487 allocs | 🟢 -29.34% |
Key Observations 🔍
-
The most significant changes observed in the benchmark data are:
- BenchmarkSplayTree/editing_trace_bench/
- There was a 44.01% increase in the time taken per operation, indicating a significant performance degradation in editing trace operations.
- BenchmarkRPC/client_to_client_via_server/
- The memory consumption decreased by 31.94% and the time per operation decreased by 31.76%, showing improved efficiency in client-to-client communication via the server.
- BenchmarkRPC/client_to_client_via_server/
- The number of allocations per operation decreased by 29.34%, reflecting a more optimized memory usage in client-to-client communication.
- BenchmarkSplayTree/editing_trace_bench/
-
Overall, several benchmarks showed slight improvements or deteriorations:
- Some benchmarks demonstrated consistent performance based on time per operation, memory usage, and allocations per operation.
-
Notable Trend:
- The BenchmarkDocument suite showed variations across different test scenarios, with some operations improving (🟢) or deteriorating (🔴) in performance, albeit not significantly.
Overall, while certain benchmarks exhibited significant improvements or deteriorations, the majority of the data showed relatively stable performance levels with minor fluctuations.
Detailed Test Results
BenchmarkDocument
Benchmark suite | Previous | Current | Change |
---|---|---|---|
constructor_test/ (ns/op) | 1472.00 ns | 1475.00 ns | 🔴 +0.20% |
constructor_test/ (B/op) | 1.43 KB | 1.43 KB | ⚪ 0% |
constructor_test/ (allocs/op) | 25 allocs | 25 allocs | ⚪ 0% |
status_test/ (ns/op) | 1334.00 ns | 1076.00 ns | 🟢 -19.34% |
status_test/ (B/op) | 1.40 KB | 1.40 KB | ⚪ 0% |
status_test/ (allocs/op) | 23 allocs | 23 allocs | ⚪ 0% |
equals_test/ (ns/op) | 7938.00 ns | 7942.00 ns | 🔴 +0.05% |
equals_test/ (B/op) | 7.71 KB | 7.71 KB | ⚪ 0% |
equals_test/ (allocs/op) | 132 allocs | 132 allocs | ⚪ 0% |
nested_update_test/ (ns/op) | 17081.00 ns | 19891.00 ns | 🔴 +16.45% |
nested_update_test/ (B/op) | 12.36 KB | 12.36 KB | ⚪ 0% |
nested_update_test/ (allocs/op) | 259 allocs | 259 allocs | ⚪ 0% |
delete_test/ (ns/op) | 22790.00 ns | 22873.00 ns | 🔴 +0.36% |
delete_test/ (B/op) | 15.84 KB | 15.84 KB | ⚪ 0% |
delete_test/ (allocs/op) | 340 allocs | 340 allocs | ⚪ 0% |
object_test/ (ns/op) | 8539.00 ns | 8603.00 ns | 🔴 +0.75% |
object_test/ (B/op) | 7.08 KB | 7.08 KB | ⚪ 0% |
object_test/ (allocs/op) | 119 allocs | 119 allocs | ⚪ 0% |
array_test/ (ns/op) | 28405.00 ns | 29440.00 ns | 🔴 +3.64% |
array_test/ (B/op) | 12.19 KB | 12.19 KB | ⚪ 0% |
array_test/ (allocs/op) | 274 allocs | 274 allocs | ⚪ 0% |
text_test/ (ns/op) | 31656.00 ns | 37787.00 ns | 🔴 +19.37% |
text_test/ (B/op) | 15.24 KB | 15.24 KB | ⚪ 0% |
text_test/ (allocs/op) | 485 allocs | 485 allocs | ⚪ 0% |
text_composition_test/ (ns/op) | 31389.00 ns | 31575.00 ns | 🔴 +0.59% |
text_composition_test/ (B/op) | 18.75 KB | 18.75 KB | ⚪ 0% |
text_composition_test/ (allocs/op) | 502 allocs | 502 allocs | ⚪ 0% |
rich_text_test/ (ns/op) | 86962.00 ns | 87116.00 ns | 🔴 +0.18% |
rich_text_test/ (B/op) | 39.41 KB | 39.40 KB | ⚪ 0% |
rich_text_test/ (allocs/op) | 1,147 allocs | 1,147 allocs | ⚪ 0% |
counter_test/ (ns/op) | 18075.00 ns | 18198.00 ns | 🔴 +0.68% |
counter_test/ (B/op) | 11.86 KB | 11.86 KB | ⚪ 0% |
counter_test/ (allocs/op) | 254 allocs | 254 allocs | ⚪ 0% |
text_edit_gc_100/ (ns/op) | 1.38 ms | 1.39 ms | 🔴 +0.31% |
text_edit_gc_100/ (B/op) | 864.90 KB | 864.98 KB | ⚪ 0% |
text_edit_gc_100/ (allocs/op) | 17,282 allocs | 17,282 allocs | ⚪ 0% |
text_edit_gc_1000/ (ns/op) | 52.51 ms | 53.08 ms | 🔴 +1.09% |
text_edit_gc_1000/ (B/op) | 46.84 MB | 46.84 MB | ⚪ 0% |
text_edit_gc_1000/ (allocs/op) | 185,593 allocs | 185,591 allocs | ⚪ 0% |
text_split_gc_100/ (ns/op) | 2.09 ms | 2.12 ms | 🔴 +1.10% |
text_split_gc_100/ (B/op) | 1.58 MB | 1.58 MB | ⚪ 0% |
text_split_gc_100/ (allocs/op) | 15,952 allocs | 15,952 allocs | ⚪ 0% |
text_split_gc_1000/ (ns/op) | 127.97 ms | 127.59 ms | 🟢 -0.30% |
text_split_gc_1000/ (B/op) | 137.79 MB | 137.79 MB | ⚪ 0% |
text_split_gc_1000/ (allocs/op) | 184,998 allocs | 184,999 allocs | ⚪ 0% |
text_delete_all_10000/ (ns/op) | 16.81 ms | 16.82 ms | 🔴 +0.05% |
text_delete_all_10000/ (B/op) | 10.58 MB | 10.57 MB | 🟢 -0.02% |
text_delete_all_10000/ (allocs/op) | 56,138 allocs | 56,129 allocs | 🟢 -0.02% |
text_delete_all_100000/ (ns/op) | 290.19 ms | 307.43 ms | 🔴 +5.94% |
text_delete_all_100000/ (B/op) | 105.54 MB | 105.54 MB | ⚪ 0% |
text_delete_all_100000/ (allocs/op) | 566,122 allocs | 566,121 allocs | ⚪ 0% |
text_100/ (ns/op) | 228221.00 ns | 235963.00 ns | 🔴 +3.39% |
text_100/ (B/op) | 120.95 KB | 120.99 KB | 🔴 +0.03% |
text_100/ (allocs/op) | 5,182 allocs | 5,182 allocs | ⚪ 0% |
text_1000/ (ns/op) | 2.43 ms | 2.47 ms | 🔴 +1.55% |
text_1000/ (B/op) | 1.16 MB | 1.16 MB | ⚪ 0% |
text_1000/ (allocs/op) | 51,085 allocs | 51,085 allocs | ⚪ 0% |
array_1000/ (ns/op) | 1.24 ms | 1.24 ms | 🔴 +0.52% |
array_1000/ (B/op) | 1.09 MB | 1.09 MB | 🔴 +0.01% |
array_1000/ (allocs/op) | 11,880 allocs | 11,880 allocs | ⚪ 0% |
array_10000/ (ns/op) | 13.36 ms | 13.44 ms | 🔴 +0.63% |
array_10000/ (B/op) | 9.89 MB | 9.89 MB | 🟢 -0.01% |
array_10000/ (allocs/op) | 120,736 allocs | 120,732 allocs | ⚪ 0% |
array_gc_100/ (ns/op) | 131033.00 ns | 132138.00 ns | 🔴 +0.84% |
array_gc_100/ (B/op) | 99.93 KB | 99.93 KB | ⚪ 0% |
array_gc_100/ (allocs/op) | 1,267 allocs | 1,267 allocs | ⚪ 0% |
array_gc_1000/ (ns/op) | 1.41 ms | 1.43 ms | 🔴 +1.38% |
array_gc_1000/ (B/op) | 1.14 MB | 1.14 MB | ⚪ 0% |
array_gc_1000/ (allocs/op) | 12,927 allocs | 12,927 allocs | ⚪ 0% |
counter_1000/ (ns/op) | 199973.00 ns | 205483.00 ns | 🔴 +2.76% |
counter_1000/ (B/op) | 178.18 KB | 178.18 KB | ⚪ 0% |
counter_1000/ (allocs/op) | 5,772 allocs | 5,772 allocs | ⚪ 0% |
counter_10000/ (ns/op) | 2.14 ms | 2.17 ms | 🔴 +1.46% |
counter_10000/ (B/op) | 2.07 MB | 2.07 MB | ⚪ 0% |
counter_10000/ (allocs/op) | 59,779 allocs | 59,779 allocs | ⚪ 0% |
object_1000/ (ns/op) | 1.41 ms | 1.42 ms | 🔴 +0.67% |
object_1000/ (B/op) | 1.44 MB | 1.44 MB | 🟢 -0.02% |
object_1000/ (allocs/op) | 9,926 allocs | 9,925 allocs | 🟢 -0.01% |
object_10000/ (ns/op) | 14.97 ms | 15.04 ms | 🔴 +0.42% |
object_10000/ (B/op) | 12.35 MB | 12.35 MB | ⚪ 0% |
object_10000/ (allocs/op) | 101,232 allocs | 101,229 allocs | ⚪ 0% |
tree_100/ (ns/op) | 1.04 ms | 1.03 ms | 🟢 -0.35% |
tree_100/ (B/op) | 951.08 KB | 951.08 KB | ⚪ 0% |
tree_100/ (allocs/op) | 6,103 allocs | 6,103 allocs | ⚪ 0% |
tree_1000/ (ns/op) | 74.45 ms | 76.93 ms | 🔴 +3.34% |
tree_1000/ (B/op) | 86.58 MB | 86.58 MB | ⚪ 0% |
tree_1000/ (allocs/op) | 60,113 allocs | 60,112 allocs | ⚪ 0% |
tree_10000/ (ns/op) | 9.39 s | 9.75 s | 🔴 +3.86% |
tree_10000/ (B/op) | 8.58 GB | 8.58 GB | ⚪ 0% |
tree_10000/ (allocs/op) | 600,205 allocs | 600,158 allocs | ⚪ 0% |
tree_delete_all_1000/ (ns/op) | 77.01 ms | 78.99 ms | 🔴 +2.57% |
tree_delete_all_1000/ (B/op) | 87.57 MB | 87.57 MB | ⚪ 0% |
tree_delete_all_1000/ (allocs/op) | 75,291 allocs | 75,290 allocs | ⚪ 0% |
tree_edit_gc_100/ (ns/op) | 3.83 ms | 3.85 ms | 🔴 +0.57% |
tree_edit_gc_100/ (B/op) | 4.15 MB | 4.15 MB | ⚪ 0% |
tree_edit_gc_100/ (allocs/op) | 15,147 allocs | 15,147 allocs | ⚪ 0% |
tree_edit_gc_1000/ (ns/op) | 314.96 ms | 316.64 ms | 🔴 +0.53% |
tree_edit_gc_1000/ (B/op) | 384.04 MB | 384.04 MB | ⚪ 0% |
tree_edit_gc_1000/ (allocs/op) | 154,937 allocs | 154,931 allocs | ⚪ 0% |
tree_split_gc_100/ (ns/op) | 2.59 ms | 2.62 ms | 🔴 +1.14% |
tree_split_gc_100/ (B/op) | 2.41 MB | 2.41 MB | ⚪ 0% |
tree_split_gc_100/ (allocs/op) | 11,132 allocs | 11,132 allocs | ⚪ 0% |
tree_split_gc_1000/ (ns/op) | 189.14 ms | 192.87 ms | 🔴 +1.97% |
tree_split_gc_1000/ (B/op) | 222.50 MB | 222.50 MB | ⚪ 0% |
tree_split_gc_1000/ (allocs/op) | 122,064 allocs | 122,084 allocs | 🔴 +0.02% |
BenchmarkRPC
Benchmark suite | Previous | Current | Change |
---|---|---|---|
client_to_server/ (ns/op) | 420.53 ms | 424.95 ms | 🔴 +1.05% |
client_to_server/ (B/op) | 17.87 MB | 17.92 MB | 🔴 +0.26% |
client_to_server/ (allocs/op) | 223,725 allocs | 223,725 allocs | ⚪ 0% |
client_to_client_via_server/ (ns/op) | 771.40 ms | 526.38 ms | 🟢 -31.76% |
client_to_client_via_server/ (B/op) | 39.09 MB | 26.60 MB | 🟢 -31.94% |
client_to_client_via_server/ (allocs/op) | 470,568 allocs | 332,487 allocs | 🟢 -29.34% |
attach_large_document/ (ns/op) | 1.26 s | 1.31 s | 🔴 +3.93% |
attach_large_document/ (B/op) | 1.90 GB | 1.92 GB | 🔴 +1.29% |
attach_large_document/ (allocs/op) | 12,439 allocs | 12,384 allocs | 🟢 -0.44% |
adminCli_to_server/ (ns/op) | 543.02 ms | 544.57 ms | 🔴 +0.29% |
adminCli_to_server/ (B/op) | 21.30 MB | 22.52 MB | 🔴 +5.72% |
adminCli_to_server/ (allocs/op) | 316,652 allocs | 316,678 allocs | ⚪ 0% |
BenchmarkLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 85.81 ns | 80.85 ns | 🟢 -5.78% |
(B/op) | 32.00 B | 32.00 B | ⚪ 0% |
(allocs/op) | 1 allocs | 1 allocs | ⚪ 0% |
BenchmarkLockerParallel
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 45.89 ns | 47.57 ns | 🔴 +3.66% |
(B/op) | 0.00 B | 0.00 B | ⚪ 0% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkLockerMoreKeys
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 187.90 ns | 177.50 ns | 🟢 -5.53% |
(B/op) | 30.00 B | 31.00 B | 🔴 +3.33% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkRWLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
RWLock_rate_2/ (ns/op) | 50.93 ns | 49.92 ns | 🟢 -1.98% |
RWLock_rate_2/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_2/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_10/ (ns/op) | 45.77 ns | 46.35 ns | 🔴 +1.27% |
RWLock_rate_10/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_10/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_100/ (ns/op) | 61.23 ns | 62.65 ns | 🔴 +2.32% |
RWLock_rate_100/ (B/op) | 2.00 B | 2.00 B | ⚪ 0% |
RWLock_rate_100/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_1000/ (ns/op) | 89.26 ns | 98.76 ns | 🔴 +10.64% |
RWLock_rate_1000/ (B/op) | 8.00 B | 9.00 B | 🔴 +12.50% |
RWLock_rate_1000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkChange
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_10_Changes/ (ns/op) | 4.49 ms | 4.50 ms | 🔴 +0.38% |
Push_10_Changes/ (B/op) | 150.94 KB | 150.48 KB | 🟢 -0.31% |
Push_10_Changes/ (allocs/op) | 1,625 allocs | 1,625 allocs | ⚪ 0% |
Push_100_Changes/ (ns/op) | 16.40 ms | 16.11 ms | 🟢 -1.79% |
Push_100_Changes/ (B/op) | 776.10 KB | 773.24 KB | 🟢 -0.37% |
Push_100_Changes/ (allocs/op) | 8,511 allocs | 8,513 allocs | 🔴 +0.02% |
Push_1000_Changes/ (ns/op) | 131.30 ms | 128.83 ms | 🟢 -1.88% |
Push_1000_Changes/ (B/op) | 7.18 MB | 7.21 MB | 🔴 +0.50% |
Push_1000_Changes/ (allocs/op) | 79,325 allocs | 79,325 allocs | ⚪ 0% |
Pull_10_Changes/ (ns/op) | 3.69 ms | 3.70 ms | 🔴 +0.23% |
Pull_10_Changes/ (B/op) | 124.60 KB | 124.12 KB | 🟢 -0.38% |
Pull_10_Changes/ (allocs/op) | 1,454 allocs | 1,454 allocs | ⚪ 0% |
Pull_100_Changes/ (ns/op) | 5.26 ms | 5.23 ms | 🟢 -0.53% |
Pull_100_Changes/ (B/op) | 354.65 KB | 353.82 KB | 🟢 -0.24% |
Pull_100_Changes/ (allocs/op) | 5,180 allocs | 5,180 allocs | ⚪ 0% |
Pull_1000_Changes/ (ns/op) | 10.49 ms | 10.64 ms | 🔴 +1.40% |
Pull_1000_Changes/ (B/op) | 2.20 MB | 2.20 MB | 🟢 -0.18% |
Pull_1000_Changes/ (allocs/op) | 44,680 allocs | 44,678 allocs | ⚪ 0% |
BenchmarkSnapshot
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_3KB_snapshot/ (ns/op) | 18.53 ms | 18.45 ms | 🟢 -0.41% |
Push_3KB_snapshot/ (B/op) | 902.00 KB | 899.35 KB | 🟢 -0.29% |
Push_3KB_snapshot/ (allocs/op) | 8,514 allocs | 8,516 allocs | 🔴 +0.02% |
Push_30KB_snapshot/ (ns/op) | 132.49 ms | 132.05 ms | 🟢 -0.34% |
Push_30KB_snapshot/ (B/op) | 8.01 MB | 8.14 MB | 🔴 +1.61% |
Push_30KB_snapshot/ (allocs/op) | 86,458 allocs | 86,955 allocs | 🔴 +0.57% |
Pull_3KB_snapshot/ (ns/op) | 7.36 ms | 7.27 ms | 🟢 -1.18% |
Pull_3KB_snapshot/ (B/op) | 1.06 MB | 1.06 MB | 🟢 -0.06% |
Pull_3KB_snapshot/ (allocs/op) | 19,256 allocs | 19,258 allocs | 🔴 +0.01% |
Pull_30KB_snapshot/ (ns/op) | 19.29 ms | 19.30 ms | 🔴 +0.04% |
Pull_30KB_snapshot/ (B/op) | 8.77 MB | 8.77 MB | ⚪ 0% |
Pull_30KB_snapshot/ (allocs/op) | 185,629 allocs | 185,674 allocs | 🔴 +0.02% |
BenchmarkSplayTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
stress_test_100000/ (ns/op) | 0.20 ns | 0.19 ns | 🟢 -1.17% |
stress_test_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_200000/ (ns/op) | 0.38 ns | 0.38 ns | 🔴 +0.76% |
stress_test_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_300000/ (ns/op) | 0.60 ns | 0.57 ns | 🟢 -5.29% |
stress_test_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_100000/ (ns/op) | 0.01 ns | 0.01 ns | 🔴 +2.38% |
random_access_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_200000/ (ns/op) | 0.03 ns | 0.03 ns | 🔴 +18.46% |
random_access_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_300000/ (ns/op) | 0.04 ns | 0.04 ns | 🔴 +0.81% |
random_access_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
editing_trace_bench/ (ns/op) | 0.00 ns | 0.00 ns | 🔴 +44.01% |
editing_trace_bench/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
editing_trace_bench/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkSync
Benchmark suite | Previous | Current | Change |
---|---|---|---|
memory_sync_10_test/ (ns/op) | 7057.00 ns | 7314.00 ns | 🔴 +3.64% |
memory_sync_10_test/ (B/op) | 1.34 KB | 1.34 KB | 🟢 -0.07% |
memory_sync_10_test/ (allocs/op) | 35 allocs | 35 allocs | ⚪ 0% |
memory_sync_100_test/ (ns/op) | 54760.00 ns | 55719.00 ns | 🔴 +1.75% |
memory_sync_100_test/ (B/op) | 9.53 KB | 9.52 KB | 🟢 -0.18% |
memory_sync_100_test/ (allocs/op) | 269 allocs | 268 allocs | 🟢 -0.37% |
memory_sync_1000_test/ (ns/op) | 617621.00 ns | 624502.00 ns | 🔴 +1.11% |
memory_sync_1000_test/ (B/op) | 75.63 KB | 75.30 KB | 🟢 -0.44% |
memory_sync_1000_test/ (allocs/op) | 2,103 allocs | 2,092 allocs | 🟢 -0.52% |
memory_sync_10000_test/ (ns/op) | 7.83 ms | 7.96 ms | 🔴 +1.58% |
memory_sync_10000_test/ (B/op) | 752.23 KB | 754.39 KB | 🔴 +0.29% |
memory_sync_10000_test/ (allocs/op) | 20,417 allocs | 20,443 allocs | 🔴 +0.13% |
BenchmarkTextEditing
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 5.20 s | 5.28 s | 🔴 +1.49% |
(B/op) | 3.92 GB | 3.92 GB | ⚪ 0% |
(allocs/op) | 20,619,784 allocs | 20,619,747 allocs | ⚪ 0% |
BenchmarkTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
10000_vertices_to_protobuf/ (ns/op) | 4.29 ms | 4.22 ms | 🟢 -1.65% |
10000_vertices_to_protobuf/ (B/op) | 6.36 MB | 6.36 MB | ⚪ 0% |
10000_vertices_to_protobuf/ (allocs/op) | 70,025 allocs | 70,025 allocs | ⚪ 0% |
10000_vertices_from_protobuf/ (ns/op) | 222.46 ms | 223.08 ms | 🔴 +0.28% |
10000_vertices_from_protobuf/ (B/op) | 442.31 MB | 442.30 MB | ⚪ 0% |
10000_vertices_from_protobuf/ (allocs/op) | 290,039 allocs | 290,039 allocs | ⚪ 0% |
20000_vertices_to_protobuf/ (ns/op) | 9.14 ms | 9.27 ms | 🔴 +1.42% |
20000_vertices_to_protobuf/ (B/op) | 12.89 MB | 12.89 MB | ⚪ 0% |
20000_vertices_to_protobuf/ (allocs/op) | 140,028 allocs | 140,028 allocs | ⚪ 0% |
20000_vertices_from_protobuf/ (ns/op) | 877.37 ms | 876.41 ms | 🟢 -0.11% |
20000_vertices_from_protobuf/ (B/op) | 1.70 GB | 1.70 GB | ⚪ 0% |
20000_vertices_from_protobuf/ (allocs/op) | 580,090 allocs | 580,090 allocs | ⚪ 0% |
30000_vertices_to_protobuf/ (ns/op) | 13.15 ms | 14.20 ms | 🔴 +8.02% |
30000_vertices_to_protobuf/ (B/op) | 18.98 MB | 18.98 MB | ⚪ 0% |
30000_vertices_to_protobuf/ (allocs/op) | 210,029 allocs | 210,029 allocs | ⚪ 0% |
30000_vertices_from_protobuf/ (ns/op) | 2.02 s | 2.04 s | 🔴 +0.98% |
30000_vertices_from_protobuf/ (B/op) | 3.75 GB | 3.75 GB | ⚪ 0% |
30000_vertices_from_protobuf/ (allocs/op) | 870,086 allocs | 870,147 allocs | ⚪ 0% |
BenchmarkVersionVector
Benchmark suite | Previous | Current | Change |
---|---|---|---|
clients_10/ (ns/op) | 157.85 ms | 159.90 ms | 🔴 +1.30% |
clients_10/ (1_changepack(bytes)) | 745.00 B | 745.00 B | ⚪ 0% |
clients_10/ (2_snapshot(bytes)) | 379.00 B | 379.00 B | ⚪ 0% |
clients_10/ (3_pushpull(ms)) | 7.00 ms | 8.00 ms | 🔴 +14.29% |
clients_10/ (4_attach(ms)) | 6.00 ms | 6.00 ms | ⚪ 0% |
clients_10/ (5_changepack_after_detach(bytes)) | 805.00 B | 805.00 B | ⚪ 0% |
clients_10/ (6_snapshot_after_detach(bytes)) | 136.00 B | 136.00 B | ⚪ 0% |
clients_10/ (7_pushpull_after_detach(ms)) | 8.00 ms | 8.00 ms | ⚪ 0% |
clients_10/ (B/op) | 20.71 MB | 18.59 MB | 🟢 -10.27% |
clients_10/ (allocs/op) | 83,248 allocs | 82,822 allocs | 🟢 -0.51% |
clients_100/ (ns/op) | 1.39 s | 1.42 s | 🔴 +2.50% |
clients_100/ (1_changepack(bytes)) | 6.14 KB | 6.14 KB | ⚪ 0% |
clients_100/ (2_snapshot(bytes)) | 3.08 KB | 3.08 KB | ⚪ 0% |
clients_100/ (3_pushpull(ms)) | 11.00 ms | 12.00 ms | 🔴 +9.09% |
clients_100/ (4_attach(ms)) | 9.00 ms | 9.00 ms | ⚪ 0% |
clients_100/ (5_changepack_after_detach(bytes)) | 6.21 KB | 6.21 KB | ⚪ 0% |
clients_100/ (6_snapshot_after_detach(bytes)) | 137.00 B | 137.00 B | ⚪ 0% |
clients_100/ (7_pushpull_after_detach(ms)) | 9.00 ms | 9.00 ms | ⚪ 0% |
clients_100/ (B/op) | 213.58 MB | 215.06 MB | 🔴 +0.69% |
clients_100/ (allocs/op) | 1,481,342 allocs | 1,478,287 allocs | 🟢 -0.21% |
clients_1000/ (ns/op) | 42.35 s | 42.51 s | 🔴 +0.38% |
clients_1000/ (1_changepack(bytes)) | 60.16 KB | 60.16 KB | ⚪ 0% |
clients_1000/ (2_snapshot(bytes)) | 30.08 KB | 30.08 KB | ⚪ 0% |
clients_1000/ (3_pushpull(ms)) | 116.00 ms | 112.00 ms | 🟢 -3.45% |
clients_1000/ (4_attach(ms)) | 72.00 ms | 72.00 ms | ⚪ 0% |
clients_1000/ (5_changepack_after_detach(bytes)) | 60.22 KB | 60.22 KB | ⚪ 0% |
clients_1000/ (6_snapshot_after_detach(bytes)) | 139.00 B | 139.00 B | ⚪ 0% |
clients_1000/ (7_pushpull_after_detach(ms)) | 27.00 ms | 22.00 ms | 🟢 -18.52% |
clients_1000/ (B/op) | 6.43 GB | 6.43 GB | 🟢 -0.02% |
clients_1000/ (allocs/op) | 93,354,528 allocs | 93,346,821 allocs | ⚪ 0% |
988c848
to
3c429b0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Go Benchmark Analysis 📊
This is a comparison result between the previous(c7797cf) and the current commit(784caa3).
Significant Changes (≥20% difference)
Benchmark suite | Previous | Current | Change |
---|---|---|---|
BenchmarkSplayTree/random_access_200000/ (ns/op) | 0.03 ns | 0.04 ns | 🔴 +29.19% |
BenchmarkRPC/client_to_client_via_server/ (allocs/op) | 470,568 allocs | 339,647 allocs | 🟢 -27.82% |
BenchmarkRPC/client_to_client_via_server/ (ns/op) | 771.40 ms | 557.42 ms | 🟢 -27.74% |
BenchmarkRPC/client_to_client_via_server/ (B/op) | 39.09 MB | 28.74 MB | 🟢 -26.47% |
BenchmarkSplayTree/random_access_300000/ (ns/op) | 0.04 ns | 0.05 ns | 🔴 +20.21% |
Key Observations 🔍
- The benchmark suite
BenchmarkSplayTree/random_access_200000/
showed a significant increase of 29.19% in the operation time from 0.03 ns to 0.04 ns, indicating a performance degradation. - The benchmark suite
BenchmarkRPC/client_to_client_via_server/
demonstrated improvements across multiple metrics, with reductions in allocations, bytes allocated, and time taken, ranging from 26.47% to 27.82%. - Overall, there were mixed results in the benchmark data, with some benchmarks showing improvements (🟢), some showing degradations (🔴), and others remaining relatively stable (⚪). No consistent trend was observed across all benchmark suites.
Detailed Test Results
BenchmarkDocument
Benchmark suite | Previous | Current | Change |
---|---|---|---|
constructor_test/ (ns/op) | 1472.00 ns | 1485.00 ns | 🔴 +0.88% |
constructor_test/ (B/op) | 1.43 KB | 1.43 KB | ⚪ 0% |
constructor_test/ (allocs/op) | 25 allocs | 25 allocs | ⚪ 0% |
status_test/ (ns/op) | 1334.00 ns | 1107.00 ns | 🟢 -17.02% |
status_test/ (B/op) | 1.40 KB | 1.40 KB | ⚪ 0% |
status_test/ (allocs/op) | 23 allocs | 23 allocs | ⚪ 0% |
equals_test/ (ns/op) | 7938.00 ns | 8080.00 ns | 🔴 +1.79% |
equals_test/ (B/op) | 7.71 KB | 7.71 KB | ⚪ 0% |
equals_test/ (allocs/op) | 132 allocs | 132 allocs | ⚪ 0% |
nested_update_test/ (ns/op) | 17081.00 ns | 17439.00 ns | 🔴 +2.10% |
nested_update_test/ (B/op) | 12.36 KB | 12.36 KB | ⚪ 0% |
nested_update_test/ (allocs/op) | 259 allocs | 259 allocs | ⚪ 0% |
delete_test/ (ns/op) | 22790.00 ns | 25981.00 ns | 🔴 +14.00% |
delete_test/ (B/op) | 15.84 KB | 15.84 KB | ⚪ 0% |
delete_test/ (allocs/op) | 340 allocs | 340 allocs | ⚪ 0% |
object_test/ (ns/op) | 8539.00 ns | 8689.00 ns | 🔴 +1.76% |
object_test/ (B/op) | 7.08 KB | 7.08 KB | ⚪ 0% |
object_test/ (allocs/op) | 119 allocs | 119 allocs | ⚪ 0% |
array_test/ (ns/op) | 28405.00 ns | 29042.00 ns | 🔴 +2.24% |
array_test/ (B/op) | 12.19 KB | 12.19 KB | ⚪ 0% |
array_test/ (allocs/op) | 274 allocs | 274 allocs | ⚪ 0% |
text_test/ (ns/op) | 31656.00 ns | 32543.00 ns | 🔴 +2.80% |
text_test/ (B/op) | 15.24 KB | 15.24 KB | ⚪ 0% |
text_test/ (allocs/op) | 485 allocs | 485 allocs | ⚪ 0% |
text_composition_test/ (ns/op) | 31389.00 ns | 32421.00 ns | 🔴 +3.29% |
text_composition_test/ (B/op) | 18.75 KB | 18.75 KB | ⚪ 0% |
text_composition_test/ (allocs/op) | 502 allocs | 502 allocs | ⚪ 0% |
rich_text_test/ (ns/op) | 86962.00 ns | 87552.00 ns | 🔴 +0.68% |
rich_text_test/ (B/op) | 39.41 KB | 39.41 KB | ⚪ 0% |
rich_text_test/ (allocs/op) | 1,147 allocs | 1,147 allocs | ⚪ 0% |
counter_test/ (ns/op) | 18075.00 ns | 18493.00 ns | 🔴 +2.31% |
counter_test/ (B/op) | 11.86 KB | 11.86 KB | ⚪ 0% |
counter_test/ (allocs/op) | 254 allocs | 254 allocs | ⚪ 0% |
text_edit_gc_100/ (ns/op) | 1.38 ms | 1.40 ms | 🔴 +1.65% |
text_edit_gc_100/ (B/op) | 864.90 KB | 864.97 KB | ⚪ 0% |
text_edit_gc_100/ (allocs/op) | 17,282 allocs | 17,283 allocs | ⚪ 0% |
text_edit_gc_1000/ (ns/op) | 52.51 ms | 53.98 ms | 🔴 +2.80% |
text_edit_gc_1000/ (B/op) | 46.84 MB | 46.84 MB | ⚪ 0% |
text_edit_gc_1000/ (allocs/op) | 185,593 allocs | 185,594 allocs | ⚪ 0% |
text_split_gc_100/ (ns/op) | 2.09 ms | 2.13 ms | 🔴 +1.56% |
text_split_gc_100/ (B/op) | 1.58 MB | 1.58 MB | ⚪ 0% |
text_split_gc_100/ (allocs/op) | 15,952 allocs | 15,951 allocs | ⚪ 0% |
text_split_gc_1000/ (ns/op) | 127.97 ms | 130.60 ms | 🔴 +2.05% |
text_split_gc_1000/ (B/op) | 137.79 MB | 137.79 MB | ⚪ 0% |
text_split_gc_1000/ (allocs/op) | 184,998 allocs | 185,004 allocs | ⚪ 0% |
text_delete_all_10000/ (ns/op) | 16.81 ms | 17.39 ms | 🔴 +3.42% |
text_delete_all_10000/ (B/op) | 10.58 MB | 10.58 MB | ⚪ 0% |
text_delete_all_10000/ (allocs/op) | 56,138 allocs | 56,138 allocs | ⚪ 0% |
text_delete_all_100000/ (ns/op) | 290.19 ms | 288.32 ms | 🟢 -0.65% |
text_delete_all_100000/ (B/op) | 105.54 MB | 105.54 MB | ⚪ 0% |
text_delete_all_100000/ (allocs/op) | 566,122 allocs | 566,107 allocs | ⚪ 0% |
text_100/ (ns/op) | 228221.00 ns | 236958.00 ns | 🔴 +3.83% |
text_100/ (B/op) | 120.95 KB | 120.99 KB | 🔴 +0.03% |
text_100/ (allocs/op) | 5,182 allocs | 5,182 allocs | ⚪ 0% |
text_1000/ (ns/op) | 2.43 ms | 2.51 ms | 🔴 +3.09% |
text_1000/ (B/op) | 1.16 MB | 1.16 MB | ⚪ 0% |
text_1000/ (allocs/op) | 51,085 allocs | 51,085 allocs | ⚪ 0% |
array_1000/ (ns/op) | 1.24 ms | 1.25 ms | 🔴 +0.86% |
array_1000/ (B/op) | 1.09 MB | 1.09 MB | ⚪ 0% |
array_1000/ (allocs/op) | 11,880 allocs | 11,880 allocs | ⚪ 0% |
array_10000/ (ns/op) | 13.36 ms | 13.58 ms | 🔴 +1.64% |
array_10000/ (B/op) | 9.89 MB | 9.89 MB | ⚪ 0% |
array_10000/ (allocs/op) | 120,736 allocs | 120,739 allocs | ⚪ 0% |
array_gc_100/ (ns/op) | 131033.00 ns | 132935.00 ns | 🔴 +1.45% |
array_gc_100/ (B/op) | 99.93 KB | 99.92 KB | ⚪ 0% |
array_gc_100/ (allocs/op) | 1,267 allocs | 1,267 allocs | ⚪ 0% |
array_gc_1000/ (ns/op) | 1.41 ms | 1.43 ms | 🔴 +1.53% |
array_gc_1000/ (B/op) | 1.14 MB | 1.14 MB | ⚪ 0% |
array_gc_1000/ (allocs/op) | 12,927 allocs | 12,927 allocs | ⚪ 0% |
counter_1000/ (ns/op) | 199973.00 ns | 203682.00 ns | 🔴 +1.85% |
counter_1000/ (B/op) | 178.18 KB | 178.18 KB | ⚪ 0% |
counter_1000/ (allocs/op) | 5,772 allocs | 5,772 allocs | ⚪ 0% |
counter_10000/ (ns/op) | 2.14 ms | 2.23 ms | 🔴 +4.06% |
counter_10000/ (B/op) | 2.07 MB | 2.07 MB | ⚪ 0% |
counter_10000/ (allocs/op) | 59,779 allocs | 59,779 allocs | ⚪ 0% |
object_1000/ (ns/op) | 1.41 ms | 1.41 ms | 🔴 +0.46% |
object_1000/ (B/op) | 1.44 MB | 1.44 MB | ⚪ 0% |
object_1000/ (allocs/op) | 9,926 allocs | 9,926 allocs | ⚪ 0% |
object_10000/ (ns/op) | 14.97 ms | 14.76 ms | 🟢 -1.44% |
object_10000/ (B/op) | 12.35 MB | 12.35 MB | 🟢 -0.01% |
object_10000/ (allocs/op) | 101,232 allocs | 101,227 allocs | ⚪ 0% |
tree_100/ (ns/op) | 1.04 ms | 1.03 ms | 🟢 -0.38% |
tree_100/ (B/op) | 951.08 KB | 951.08 KB | ⚪ 0% |
tree_100/ (allocs/op) | 6,103 allocs | 6,103 allocs | ⚪ 0% |
tree_1000/ (ns/op) | 74.45 ms | 74.93 ms | 🔴 +0.65% |
tree_1000/ (B/op) | 86.58 MB | 86.58 MB | ⚪ 0% |
tree_1000/ (allocs/op) | 60,113 allocs | 60,113 allocs | ⚪ 0% |
tree_10000/ (ns/op) | 9.39 s | 9.53 s | 🔴 +1.54% |
tree_10000/ (B/op) | 8.58 GB | 8.58 GB | ⚪ 0% |
tree_10000/ (allocs/op) | 600,205 allocs | 600,191 allocs | ⚪ 0% |
tree_delete_all_1000/ (ns/op) | 77.01 ms | 78.04 ms | 🔴 +1.33% |
tree_delete_all_1000/ (B/op) | 87.57 MB | 87.57 MB | ⚪ 0% |
tree_delete_all_1000/ (allocs/op) | 75,291 allocs | 75,288 allocs | ⚪ 0% |
tree_edit_gc_100/ (ns/op) | 3.83 ms | 3.92 ms | 🔴 +2.24% |
tree_edit_gc_100/ (B/op) | 4.15 MB | 4.15 MB | ⚪ 0% |
tree_edit_gc_100/ (allocs/op) | 15,147 allocs | 15,147 allocs | ⚪ 0% |
tree_edit_gc_1000/ (ns/op) | 314.96 ms | 315.79 ms | 🔴 +0.26% |
tree_edit_gc_1000/ (B/op) | 384.04 MB | 384.04 MB | ⚪ 0% |
tree_edit_gc_1000/ (allocs/op) | 154,937 allocs | 154,953 allocs | 🔴 +0.01% |
tree_split_gc_100/ (ns/op) | 2.59 ms | 2.65 ms | 🔴 +2.07% |
tree_split_gc_100/ (B/op) | 2.41 MB | 2.41 MB | ⚪ 0% |
tree_split_gc_100/ (allocs/op) | 11,132 allocs | 11,132 allocs | ⚪ 0% |
tree_split_gc_1000/ (ns/op) | 189.14 ms | 191.20 ms | 🔴 +1.09% |
tree_split_gc_1000/ (B/op) | 222.50 MB | 222.50 MB | ⚪ 0% |
tree_split_gc_1000/ (allocs/op) | 122,064 allocs | 122,065 allocs | ⚪ 0% |
BenchmarkRPC
Benchmark suite | Previous | Current | Change |
---|---|---|---|
client_to_server/ (ns/op) | 420.53 ms | 438.32 ms | 🔴 +4.23% |
client_to_server/ (B/op) | 17.87 MB | 16.13 MB | 🟢 -9.74% |
client_to_server/ (allocs/op) | 223,725 allocs | 223,512 allocs | 🟢 -0.10% |
client_to_client_via_server/ (ns/op) | 771.40 ms | 557.42 ms | 🟢 -27.74% |
client_to_client_via_server/ (B/op) | 39.09 MB | 28.74 MB | 🟢 -26.47% |
client_to_client_via_server/ (allocs/op) | 470,568 allocs | 339,647 allocs | 🟢 -27.82% |
attach_large_document/ (ns/op) | 1.26 s | 1.32 s | 🔴 +5.05% |
attach_large_document/ (B/op) | 1.90 GB | 1.91 GB | 🔴 +0.56% |
attach_large_document/ (allocs/op) | 12,439 allocs | 12,253 allocs | 🟢 -1.50% |
adminCli_to_server/ (ns/op) | 543.02 ms | 570.51 ms | 🔴 +5.06% |
adminCli_to_server/ (B/op) | 21.30 MB | 21.49 MB | 🔴 +0.87% |
adminCli_to_server/ (allocs/op) | 316,652 allocs | 316,702 allocs | 🔴 +0.02% |
BenchmarkLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 85.81 ns | 81.64 ns | 🟢 -4.86% |
(B/op) | 32.00 B | 32.00 B | ⚪ 0% |
(allocs/op) | 1 allocs | 1 allocs | ⚪ 0% |
BenchmarkLockerParallel
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 45.89 ns | 53.93 ns | 🔴 +17.52% |
(B/op) | 0.00 B | 0.00 B | ⚪ 0% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkLockerMoreKeys
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 187.90 ns | 190.90 ns | 🔴 +1.60% |
(B/op) | 30.00 B | 31.00 B | 🔴 +3.33% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkRWLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
RWLock_rate_2/ (ns/op) | 50.93 ns | 57.02 ns | 🔴 +11.96% |
RWLock_rate_2/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_2/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_10/ (ns/op) | 45.77 ns | 51.72 ns | 🔴 +13.00% |
RWLock_rate_10/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
RWLock_rate_10/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_100/ (ns/op) | 61.23 ns | 67.49 ns | 🔴 +10.22% |
RWLock_rate_100/ (B/op) | 2.00 B | 2.00 B | ⚪ 0% |
RWLock_rate_100/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
RWLock_rate_1000/ (ns/op) | 89.26 ns | 95.81 ns | 🔴 +7.34% |
RWLock_rate_1000/ (B/op) | 8.00 B | 8.00 B | ⚪ 0% |
RWLock_rate_1000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkChange
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_10_Changes/ (ns/op) | 4.49 ms | 4.67 ms | 🔴 +3.97% |
Push_10_Changes/ (B/op) | 150.94 KB | 150.38 KB | 🟢 -0.37% |
Push_10_Changes/ (allocs/op) | 1,625 allocs | 1,624 allocs | 🟢 -0.06% |
Push_100_Changes/ (ns/op) | 16.40 ms | 16.10 ms | 🟢 -1.83% |
Push_100_Changes/ (B/op) | 776.10 KB | 776.04 KB | ⚪ 0% |
Push_100_Changes/ (allocs/op) | 8,511 allocs | 8,513 allocs | 🔴 +0.02% |
Push_1000_Changes/ (ns/op) | 131.30 ms | 126.97 ms | 🟢 -3.30% |
Push_1000_Changes/ (B/op) | 7.18 MB | 7.19 MB | 🔴 +0.12% |
Push_1000_Changes/ (allocs/op) | 79,325 allocs | 79,329 allocs | ⚪ 0% |
Pull_10_Changes/ (ns/op) | 3.69 ms | 3.82 ms | 🔴 +3.64% |
Pull_10_Changes/ (B/op) | 124.60 KB | 123.57 KB | 🟢 -0.83% |
Pull_10_Changes/ (allocs/op) | 1,454 allocs | 1,454 allocs | ⚪ 0% |
Pull_100_Changes/ (ns/op) | 5.26 ms | 5.40 ms | 🔴 +2.69% |
Pull_100_Changes/ (B/op) | 354.65 KB | 352.73 KB | 🟢 -0.54% |
Pull_100_Changes/ (allocs/op) | 5,180 allocs | 5,180 allocs | ⚪ 0% |
Pull_1000_Changes/ (ns/op) | 10.49 ms | 11.07 ms | 🔴 +5.44% |
Pull_1000_Changes/ (B/op) | 2.20 MB | 2.20 MB | 🟢 -0.11% |
Pull_1000_Changes/ (allocs/op) | 44,680 allocs | 44,682 allocs | ⚪ 0% |
BenchmarkSnapshot
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_3KB_snapshot/ (ns/op) | 18.53 ms | 18.43 ms | 🟢 -0.51% |
Push_3KB_snapshot/ (B/op) | 902.00 KB | 897.62 KB | 🟢 -0.49% |
Push_3KB_snapshot/ (allocs/op) | 8,514 allocs | 8,518 allocs | 🔴 +0.05% |
Push_30KB_snapshot/ (ns/op) | 132.49 ms | 130.04 ms | 🟢 -1.86% |
Push_30KB_snapshot/ (B/op) | 8.01 MB | 8.17 MB | 🔴 +2.06% |
Push_30KB_snapshot/ (allocs/op) | 86,458 allocs | 88,911 allocs | 🔴 +2.84% |
Pull_3KB_snapshot/ (ns/op) | 7.36 ms | 7.41 ms | 🔴 +0.70% |
Pull_3KB_snapshot/ (B/op) | 1.06 MB | 1.06 MB | 🟢 -0.28% |
Pull_3KB_snapshot/ (allocs/op) | 19,256 allocs | 19,252 allocs | 🟢 -0.02% |
Pull_30KB_snapshot/ (ns/op) | 19.29 ms | 19.33 ms | 🔴 +0.19% |
Pull_30KB_snapshot/ (B/op) | 8.77 MB | 8.76 MB | 🟢 -0.03% |
Pull_30KB_snapshot/ (allocs/op) | 185,629 allocs | 185,672 allocs | 🔴 +0.02% |
BenchmarkSplayTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
stress_test_100000/ (ns/op) | 0.20 ns | 0.19 ns | 🟢 -3.73% |
stress_test_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_200000/ (ns/op) | 0.38 ns | 0.38 ns | 🟢 -1.10% |
stress_test_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
stress_test_300000/ (ns/op) | 0.60 ns | 0.58 ns | 🟢 -3.29% |
stress_test_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
stress_test_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_100000/ (ns/op) | 0.01 ns | 0.01 ns | 🟢 -1.27% |
random_access_100000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_100000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_200000/ (ns/op) | 0.03 ns | 0.04 ns | 🔴 +29.19% |
random_access_200000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_200000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
random_access_300000/ (ns/op) | 0.04 ns | 0.05 ns | 🔴 +20.21% |
random_access_300000/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
random_access_300000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
editing_trace_bench/ (ns/op) | 0.00 ns | 0.00 ns | 🟢 -12.82% |
editing_trace_bench/ (B/op) | 0.00 B | 0.00 B | ⚪ 0% |
editing_trace_bench/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkSync
Benchmark suite | Previous | Current | Change |
---|---|---|---|
memory_sync_10_test/ (ns/op) | 7057.00 ns | 7311.00 ns | 🔴 +3.60% |
memory_sync_10_test/ (B/op) | 1.34 KB | 1.34 KB | ⚪ 0% |
memory_sync_10_test/ (allocs/op) | 35 allocs | 35 allocs | ⚪ 0% |
memory_sync_100_test/ (ns/op) | 54760.00 ns | 55661.00 ns | 🔴 +1.65% |
memory_sync_100_test/ (B/op) | 9.53 KB | 9.51 KB | 🟢 -0.27% |
memory_sync_100_test/ (allocs/op) | 269 allocs | 268 allocs | 🟢 -0.37% |
memory_sync_1000_test/ (ns/op) | 617621.00 ns | 619259.00 ns | 🔴 +0.27% |
memory_sync_1000_test/ (B/op) | 75.63 KB | 75.77 KB | 🔴 +0.18% |
memory_sync_1000_test/ (allocs/op) | 2,103 allocs | 2,105 allocs | 🔴 +0.10% |
memory_sync_10000_test/ (ns/op) | 7.83 ms | 7.67 ms | 🟢 -2.08% |
memory_sync_10000_test/ (B/op) | 752.23 KB | 756.94 KB | 🔴 +0.63% |
memory_sync_10000_test/ (allocs/op) | 20,417 allocs | 20,471 allocs | 🔴 +0.26% |
BenchmarkTextEditing
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 5.20 s | 5.18 s | 🟢 -0.46% |
(B/op) | 3.92 GB | 3.92 GB | ⚪ 0% |
(allocs/op) | 20,619,784 allocs | 20,619,749 allocs | ⚪ 0% |
BenchmarkTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
10000_vertices_to_protobuf/ (ns/op) | 4.29 ms | 4.23 ms | 🟢 -1.44% |
10000_vertices_to_protobuf/ (B/op) | 6.36 MB | 6.36 MB | ⚪ 0% |
10000_vertices_to_protobuf/ (allocs/op) | 70,025 allocs | 70,025 allocs | ⚪ 0% |
10000_vertices_from_protobuf/ (ns/op) | 222.46 ms | 220.00 ms | 🟢 -1.11% |
10000_vertices_from_protobuf/ (B/op) | 442.31 MB | 442.31 MB | ⚪ 0% |
10000_vertices_from_protobuf/ (allocs/op) | 290,039 allocs | 290,057 allocs | ⚪ 0% |
20000_vertices_to_protobuf/ (ns/op) | 9.14 ms | 9.34 ms | 🔴 +2.21% |
20000_vertices_to_protobuf/ (B/op) | 12.89 MB | 12.89 MB | ⚪ 0% |
20000_vertices_to_protobuf/ (allocs/op) | 140,028 allocs | 140,028 allocs | ⚪ 0% |
20000_vertices_from_protobuf/ (ns/op) | 877.37 ms | 876.77 ms | 🟢 -0.07% |
20000_vertices_from_protobuf/ (B/op) | 1.70 GB | 1.70 GB | ⚪ 0% |
20000_vertices_from_protobuf/ (allocs/op) | 580,090 allocs | 580,045 allocs | ⚪ 0% |
30000_vertices_to_protobuf/ (ns/op) | 13.15 ms | 14.22 ms | 🔴 +8.18% |
30000_vertices_to_protobuf/ (B/op) | 18.98 MB | 18.98 MB | ⚪ 0% |
30000_vertices_to_protobuf/ (allocs/op) | 210,029 allocs | 210,029 allocs | ⚪ 0% |
30000_vertices_from_protobuf/ (ns/op) | 2.02 s | 1.99 s | 🟢 -1.65% |
30000_vertices_from_protobuf/ (B/op) | 3.75 GB | 3.75 GB | ⚪ 0% |
30000_vertices_from_protobuf/ (allocs/op) | 870,086 allocs | 870,049 allocs | ⚪ 0% |
BenchmarkVersionVector
Benchmark suite | Previous | Current | Change |
---|---|---|---|
clients_10/ (ns/op) | 157.85 ms | 161.21 ms | 🔴 +2.13% |
clients_10/ (1_changepack(bytes)) | 745.00 B | 745.00 B | ⚪ 0% |
clients_10/ (2_snapshot(bytes)) | 379.00 B | 379.00 B | ⚪ 0% |
clients_10/ (3_pushpull(ms)) | 7.00 ms | 8.00 ms | 🔴 +14.29% |
clients_10/ (4_attach(ms)) | 6.00 ms | 6.00 ms | ⚪ 0% |
clients_10/ (5_changepack_after_detach(bytes)) | 805.00 B | 805.00 B | ⚪ 0% |
clients_10/ (6_snapshot_after_detach(bytes)) | 136.00 B | 136.00 B | ⚪ 0% |
clients_10/ (7_pushpull_after_detach(ms)) | 8.00 ms | 8.00 ms | ⚪ 0% |
clients_10/ (B/op) | 20.71 MB | 17.92 MB | 🟢 -13.51% |
clients_10/ (allocs/op) | 83,248 allocs | 83,184 allocs | 🟢 -0.08% |
clients_100/ (ns/op) | 1.39 s | 1.44 s | 🔴 +4.00% |
clients_100/ (1_changepack(bytes)) | 6.14 KB | 6.14 KB | ⚪ 0% |
clients_100/ (2_snapshot(bytes)) | 3.08 KB | 3.08 KB | ⚪ 0% |
clients_100/ (3_pushpull(ms)) | 11.00 ms | 12.00 ms | 🔴 +9.09% |
clients_100/ (4_attach(ms)) | 9.00 ms | 10.00 ms | 🔴 +11.11% |
clients_100/ (5_changepack_after_detach(bytes)) | 6.21 KB | 6.21 KB | ⚪ 0% |
clients_100/ (6_snapshot_after_detach(bytes)) | 137.00 B | 137.00 B | ⚪ 0% |
clients_100/ (7_pushpull_after_detach(ms)) | 9.00 ms | 10.00 ms | 🔴 +11.11% |
clients_100/ (B/op) | 213.58 MB | 217.60 MB | 🔴 +1.88% |
clients_100/ (allocs/op) | 1,481,342 allocs | 1,481,498 allocs | 🔴 +0.01% |
clients_1000/ (ns/op) | 42.35 s | 43.90 s | 🔴 +3.66% |
clients_1000/ (1_changepack(bytes)) | 60.16 KB | 60.16 KB | ⚪ 0% |
clients_1000/ (2_snapshot(bytes)) | 30.08 KB | 30.08 KB | ⚪ 0% |
clients_1000/ (3_pushpull(ms)) | 116.00 ms | 112.00 ms | 🟢 -3.45% |
clients_1000/ (4_attach(ms)) | 72.00 ms | 71.00 ms | 🟢 -1.39% |
clients_1000/ (5_changepack_after_detach(bytes)) | 60.22 KB | 60.22 KB | ⚪ 0% |
clients_1000/ (6_snapshot_after_detach(bytes)) | 139.00 B | 139.00 B | ⚪ 0% |
clients_1000/ (7_pushpull_after_detach(ms)) | 27.00 ms | 23.00 ms | 🟢 -14.81% |
clients_1000/ (B/op) | 6.43 GB | 6.43 GB | 🔴 +0.02% |
clients_1000/ (allocs/op) | 93,354,528 allocs | 93,353,788 allocs | ⚪ 0% |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
server/backend/pubsub/publisher.go (1)
116-122
:⚠️ Potential issueBug: logging references cleared events array
The logging references
bp.events
at line 119, but this array has already been cleared at line 111. This will result in incorrect log information showing 0 events even when events were published.if logging.Enabled(zap.DebugLevel) { bp.logger.Infof( "Publishing batch of %d events for document %s", - len(bp.events), + len(events), bp.subs.docKey, ) }
🧹 Nitpick comments (1)
server/backend/pubsub/publisher.go (1)
77-83
: Consider clarifying the duplicate event handling limitThe code allows at most 2 DocChangedEvents from the same publisher in a batch (returning early if count > 1), which matches the comment about "only the two events are processed". Consider documenting in a comment why specifically 2 events are allowed rather than 1 or 3.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
client/client.go
(2 hunks)server/backend/pubsub/publisher.go
(4 hunks)
✅ Files skipped from review due to trivial changes (1)
- client/client.go
🔇 Additional comments (4)
server/backend/pubsub/publisher.go (4)
46-46
: Well-placed field addition for tracking duplicate eventsThe addition of
docChangedCountMap
to track the count of DocChangedEvents per publisher is a good approach to prevent duplicate events in a batch.
57-57
: Good initialization of the mapProperly initializing the map in the constructor ensures it's ready for use when events start flowing.
73-83
: Effective implementation for preventing duplicate DocChangedEventsThe implementation correctly limits the number of DocChangedEvents from the same publisher to 2 per batch, addressing the issue described in the comment. The code handles both the existence check and count tracking in a clean manner.
112-112
: Properly resetting the map for the next batchResetting the map after each batch is published ensures the counting mechanism starts fresh for the next batch cycle, which is essential for correct behavior across multiple batches.
What this PR does / why we need it:
Prevent duplicate DocChangedEvents in batch processing
If the queue contains multiple DocChangedEvents from the same publisher,
only two events are processed. This happens when a client attaches or
detaches a document, as the order of Changed and Watch/Unwatch events is
not guaranteed.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:
Additional documentation:
Checklist:
Summary by CodeRabbit