-
-
Notifications
You must be signed in to change notification settings - Fork 154
Add dedicated VV encoder/decoder for MongoDB #1232
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
base: main
Are you sure you want to change the base?
Conversation
""" WalkthroughThe changes introduce byte-level serialization and deserialization support for the Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant MongoRegistry
participant VersionVector
Client->>MongoRegistry: Encode VersionVector
MongoRegistry->>VersionVector: Call Bytes()
VersionVector-->>MongoRegistry: Return []byte
MongoRegistry-->>Client: Store byte data
Client->>MongoRegistry: Decode VersionVector
MongoRegistry->>VersionVector: Call VersionVectorFromBytes([]byte)
VersionVector-->>MongoRegistry: Return VersionVector instance
MongoRegistry-->>Client: Return VersionVector
""" 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
⏰ Context from checks skipped due to timeout of 90000ms (3)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. 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 (
|
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1232 +/- ##
==========================================
- Coverage 37.80% 37.69% -0.12%
==========================================
Files 182 182
Lines 28810 28857 +47
==========================================
- Hits 10893 10879 -14
- Misses 17031 17093 +62
+ Partials 886 885 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This PR can be merged after #1223. |
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(70f2f95) and the current commit(ae9747e).
Significant Changes (≥20% difference)
Benchmark suite | Previous | Current | Change |
---|---|---|---|
BenchmarkSyncConcurrency/1-100-10/ (allocs/op) | 157,899,480 allocs | 111,042,649 allocs | 🟢 -29.68% |
BenchmarkSyncConcurrency/100-100-10/ (allocs/op) | 159,885,490 allocs | 112,962,477 allocs | 🟢 -29.35% |
BenchmarkSyncConcurrency/300_100-10/ (allocs/op) | 164,982,135 allocs | 117,772,659 allocs | 🟢 -28.61% |
BenchmarkVersionVector/clients_1000/ (7_pushpull_after_detach(ms)) | 5.00 ms | 6.00 ms | 🔴 +20.00% |
Key Observations 🔍
- The benchmark suite BenchmarkSyncConcurrency showed a significant decrease in allocations ranging from approximately 29% to 30% across different scenarios.
- BenchmarkVersionVector exhibited an increase of 20% in the time taken for
7_pushpull_after_detach
forclients_1000
. - Overall, there were no consistent trends of significant changes exceeding 20% across the various benchmark suites.
Clock Analysis
Lamport vs VersionVector
BenchmarkVersionVector Test
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 |
Version Vector (current)
Metric | 10 clients | 100 clients | 1000 clients |
---|---|---|---|
Total Operation Time | 128.95 ms | 1.09 s | 14.54 s |
Memory Allocations | 7.24 MB | 71.12 MB | 1.94 GB |
Number of Allocations (allocs/op) | 57,825 allocs | 711,252 allocs | 31,873,460 allocs |
ChangePack Size | 202.00 B | 202.00 B | 203.00 B |
Snapshot Size | 399.00 B | 3.10 KB | 30.10 KB |
Push-Pull Time | 5.00 ms | 5.00 ms | 5.00 ms |
Attach Time | 5.00 ms | 7.00 ms | 23.00 ms |
ChangePack After Detach | 262.00 B | 263.00 B | 263.00 B |
Snapshot After Detach | 156.00 B | 156.00 B | 156.00 B |
Push-Pull After Detach | 5.00 ms | 5.00 ms | 6.00 ms |
BenchmarkSyncConcurrency Test
Metric | Clients | Lamport (v0.5.2) | Version Vector (current) |
---|---|---|---|
Total Operation Time | 1-100-10-10 | 7.48 s | 9.57 s |
100-100-10-10 | 9.62 s | 10.80 s | |
300_100-10-10 | 14.77 s | 13.30 s | |
Memory Allocations | 1-100-10-10 | 1.15 GB | 5.97 GB |
100-100-10-10 | 1.45 GB | 6.11 GB | |
300_100-10-10 | 2.19 GB | 6.40 GB | |
Number of Allocations (allocs/op) | 1-100-10-10 | 17,107,766 | 111,042,649 |
100-100-10-10 | 20,084,480 | 112,962,477 | |
300_100-10-10 | 30,359,215 | 117,772,659 |
Summary
-
The Version Vector clock system showed better performance than Lamport in terms of total operation time, memory allocations, and number of allocations across different scales of clients.
-
Version Vector also demonstrated consistent performance with minimal changes in operation time, memory usage, and allocations as the number of clients increased.
-
The Version Vector clock system outperformed the Lamport clock system in terms of total operation time, memory allocations, and number of allocations. It showcased more stable performance across different client scales, indicating its efficiency in handling concurrent operations.
Detailed Test Results
BenchmarkDeletionConcurrency
Benchmark suite | Previous | Current | Change |
---|---|---|---|
concurrent_text_delete_range_100/ (ns/op) | 867.70 ms | 884.18 ms | 🔴 +1.90% |
concurrent_text_delete_range_100/ (B/op) | 59.54 MB | 56.28 MB | 🟢 -5.48% |
concurrent_text_delete_range_100/ (allocs/op) | 752,364 allocs | 673,211 allocs | 🟢 -10.52% |
concurrent_text_delete_range_1000/ (ns/op) | 7.11 s | 7.23 s | 🔴 +1.62% |
concurrent_text_delete_range_1000/ (B/op) | 381.09 MB | 349.72 MB | 🟢 -8.23% |
concurrent_text_delete_range_1000/ (allocs/op) | 7,283,410 allocs | 6,382,008 allocs | 🟢 -12.38% |
concurrent_tree_delete_range_100/ (ns/op) | 900.26 ms | 887.57 ms | 🟢 -1.41% |
concurrent_tree_delete_range_100/ (B/op) | 69.16 MB | 66.73 MB | 🟢 -3.52% |
concurrent_tree_delete_range_100/ (allocs/op) | 795,980 allocs | 716,977 allocs | 🟢 -9.93% |
concurrent_tree_delete_range_1000/ (ns/op) | 7.88 s | 7.89 s | 🔴 +0.09% |
concurrent_tree_delete_range_1000/ (B/op) | 909.75 MB | 887.45 MB | 🟢 -2.45% |
concurrent_tree_delete_range_1000/ (allocs/op) | 7,654,749 allocs | 6,755,442 allocs | 🟢 -11.75% |
concurrent_text_edit_delete_all_100/ (ns/op) | 750.06 ms | 769.25 ms | 🔴 +2.56% |
concurrent_text_edit_delete_all_100/ (B/op) | 51.93 MB | 51.64 MB | 🟢 -0.55% |
concurrent_text_edit_delete_all_100/ (allocs/op) | 634,894 allocs | 568,989 allocs | 🟢 -10.38% |
concurrent_text_edit_delete_all_1000/ (ns/op) | 5.99 s | 6.01 s | 🔴 +0.42% |
concurrent_text_edit_delete_all_1000/ (B/op) | 325.06 MB | 299.98 MB | 🟢 -7.71% |
concurrent_text_edit_delete_all_1000/ (allocs/op) | 5,940,553 allocs | 5,191,373 allocs | 🟢 -12.61% |
concurrent_tree_edit_delete_all_100/ (ns/op) | 780.84 ms | 788.86 ms | 🔴 +1.03% |
concurrent_tree_edit_delete_all_100/ (B/op) | 87.18 MB | 80.24 MB | 🟢 -7.96% |
concurrent_tree_edit_delete_all_100/ (allocs/op) | 873,457 allocs | 738,400 allocs | 🟢 -15.46% |
concurrent_tree_edit_delete_all_1000/ (ns/op) | 6.58 s | 6.64 s | 🔴 +0.83% |
concurrent_tree_edit_delete_all_1000/ (B/op) | 728.61 MB | 710.49 MB | 🟢 -2.49% |
concurrent_tree_edit_delete_all_1000/ (allocs/op) | 6,408,221 allocs | 5,660,051 allocs | 🟢 -11.68% |
BenchmarkDocument
Benchmark suite | Previous | Current | Change |
---|---|---|---|
constructor_test/ (ns/op) | 1662.00 ns | 1638.00 ns | 🟢 -1.44% |
constructor_test/ (B/op) | 1.56 KB | 1.56 KB | ⚪ 0% |
constructor_test/ (allocs/op) | 27 allocs | 27 allocs | ⚪ 0% |
status_test/ (ns/op) | 1234.00 ns | 1231.00 ns | 🟢 -0.24% |
status_test/ (B/op) | 1.53 KB | 1.53 KB | ⚪ 0% |
status_test/ (allocs/op) | 25 allocs | 25 allocs | ⚪ 0% |
equals_test/ (ns/op) | 8725.00 ns | 8720.00 ns | 🟢 -0.06% |
equals_test/ (B/op) | 8.22 KB | 8.22 KB | ⚪ 0% |
equals_test/ (allocs/op) | 138 allocs | 138 allocs | ⚪ 0% |
nested_update_test/ (ns/op) | 19103.00 ns | 18141.00 ns | 🟢 -5.04% |
nested_update_test/ (B/op) | 12.81 KB | 12.81 KB | ⚪ 0% |
nested_update_test/ (allocs/op) | 266 allocs | 266 allocs | ⚪ 0% |
delete_test/ (ns/op) | 24521.00 ns | 24517.00 ns | 🟢 -0.02% |
delete_test/ (B/op) | 16.37 KB | 16.37 KB | ⚪ 0% |
delete_test/ (allocs/op) | 347 allocs | 347 allocs | ⚪ 0% |
object_test/ (ns/op) | 9412.00 ns | 9359.00 ns | 🟢 -0.56% |
object_test/ (B/op) | 7.38 KB | 7.38 KB | ⚪ 0% |
object_test/ (allocs/op) | 122 allocs | 122 allocs | ⚪ 0% |
array_test/ (ns/op) | 30854.00 ns | 30770.00 ns | 🟢 -0.27% |
array_test/ (B/op) | 12.66 KB | 12.66 KB | ⚪ 0% |
array_test/ (allocs/op) | 281 allocs | 281 allocs | ⚪ 0% |
text_test/ (ns/op) | 34623.00 ns | 34526.00 ns | 🟢 -0.28% |
text_test/ (B/op) | 15.48 KB | 15.48 KB | ⚪ 0% |
text_test/ (allocs/op) | 502 allocs | 502 allocs | ⚪ 0% |
text_composition_test/ (ns/op) | 34670.00 ns | 33614.00 ns | 🟢 -3.05% |
text_composition_test/ (B/op) | 16.95 KB | 16.95 KB | ⚪ 0% |
text_composition_test/ (allocs/op) | 488 allocs | 488 allocs | ⚪ 0% |
rich_text_test/ (ns/op) | 93486.00 ns | 91539.00 ns | 🟢 -2.08% |
rich_text_test/ (B/op) | 39.00 KB | 39.00 KB | ⚪ 0% |
rich_text_test/ (allocs/op) | 1,187 allocs | 1,187 allocs | ⚪ 0% |
counter_test/ (ns/op) | 19036.00 ns | 18610.00 ns | 🟢 -2.24% |
counter_test/ (B/op) | 12.41 KB | 12.41 KB | ⚪ 0% |
counter_test/ (allocs/op) | 255 allocs | 255 allocs | ⚪ 0% |
text_edit_gc_100/ (ns/op) | 1.46 ms | 1.51 ms | 🔴 +3.23% |
text_edit_gc_100/ (B/op) | 810.09 KB | 810.02 KB | ⚪ 0% |
text_edit_gc_100/ (allocs/op) | 16,785 allocs | 16,785 allocs | ⚪ 0% |
text_edit_gc_1000/ (ns/op) | 59.06 ms | 56.69 ms | 🟢 -4.01% |
text_edit_gc_1000/ (B/op) | 46.29 MB | 46.29 MB | ⚪ 0% |
text_edit_gc_1000/ (allocs/op) | 180,594 allocs | 180,599 allocs | ⚪ 0% |
text_split_gc_100/ (ns/op) | 2.34 ms | 2.23 ms | 🟢 -4.39% |
text_split_gc_100/ (B/op) | 1.53 MB | 1.53 MB | ⚪ 0% |
text_split_gc_100/ (allocs/op) | 15,552 allocs | 15,551 allocs | ⚪ 0% |
text_split_gc_1000/ (ns/op) | 139.81 ms | 139.76 ms | 🟢 -0.04% |
text_split_gc_1000/ (B/op) | 137.29 MB | 137.29 MB | ⚪ 0% |
text_split_gc_1000/ (allocs/op) | 180,997 allocs | 181,005 allocs | ⚪ 0% |
text_100/ (ns/op) | 241119.00 ns | 245201.00 ns | 🔴 +1.69% |
text_100/ (B/op) | 113.21 KB | 113.21 KB | ⚪ 0% |
text_100/ (allocs/op) | 4,984 allocs | 4,984 allocs | ⚪ 0% |
text_1000/ (ns/op) | 2.62 ms | 2.68 ms | 🔴 +2.24% |
text_1000/ (B/op) | 1.08 MB | 1.08 MB | ⚪ 0% |
text_1000/ (allocs/op) | 49,087 allocs | 49,087 allocs | ⚪ 0% |
array_1000/ (ns/op) | 1.37 ms | 1.38 ms | 🔴 +0.91% |
array_1000/ (B/op) | 1.13 MB | 1.13 MB | ⚪ 0% |
array_1000/ (allocs/op) | 12,882 allocs | 12,882 allocs | ⚪ 0% |
array_10000/ (ns/op) | 15.00 ms | 14.59 ms | 🟢 -2.72% |
array_10000/ (B/op) | 10.29 MB | 10.29 MB | ⚪ 0% |
array_10000/ (allocs/op) | 130,734 allocs | 130,734 allocs | ⚪ 0% |
array_gc_100/ (ns/op) | 149997.00 ns | 144654.00 ns | 🟢 -3.56% |
array_gc_100/ (B/op) | 104.26 KB | 104.29 KB | 🔴 +0.03% |
array_gc_100/ (allocs/op) | 1,369 allocs | 1,370 allocs | 🔴 +0.07% |
array_gc_1000/ (ns/op) | 1.55 ms | 1.54 ms | 🟢 -0.55% |
array_gc_1000/ (B/op) | 1.18 MB | 1.18 MB | 🔴 +0.02% |
array_gc_1000/ (allocs/op) | 13,929 allocs | 13,930 allocs | ⚪ 0% |
counter_1000/ (ns/op) | 212519.00 ns | 207245.00 ns | 🟢 -2.48% |
counter_1000/ (B/op) | 194.34 KB | 194.34 KB | ⚪ 0% |
counter_1000/ (allocs/op) | 5,772 allocs | 5,772 allocs | ⚪ 0% |
counter_10000/ (ns/op) | 2.30 ms | 2.25 ms | 🟢 -2.37% |
counter_10000/ (B/op) | 2.23 MB | 2.23 MB | ⚪ 0% |
counter_10000/ (allocs/op) | 59,779 allocs | 59,779 allocs | ⚪ 0% |
object_1000/ (ns/op) | 1.64 ms | 1.59 ms | 🟢 -3.12% |
object_1000/ (B/op) | 1.48 MB | 1.48 MB | ⚪ 0% |
object_1000/ (allocs/op) | 10,927 allocs | 10,927 allocs | ⚪ 0% |
object_10000/ (ns/op) | 17.34 ms | 17.02 ms | 🟢 -1.86% |
object_10000/ (B/op) | 12.75 MB | 12.75 MB | ⚪ 0% |
object_10000/ (allocs/op) | 111,228 allocs | 111,231 allocs | ⚪ 0% |
tree_100/ (ns/op) | 797535.00 ns | 771570.00 ns | 🟢 -3.26% |
tree_100/ (B/op) | 524.13 KB | 524.12 KB | ⚪ 0% |
tree_100/ (allocs/op) | 4,721 allocs | 4,721 allocs | ⚪ 0% |
tree_1000/ (ns/op) | 53.95 ms | 56.24 ms | 🔴 +4.24% |
tree_1000/ (B/op) | 43.74 MB | 43.74 MB | ⚪ 0% |
tree_1000/ (allocs/op) | 46,130 allocs | 46,130 allocs | ⚪ 0% |
tree_10000/ (ns/op) | 6.96 s | 7.16 s | 🔴 +2.85% |
tree_10000/ (B/op) | 4.30 GB | 4.30 GB | ⚪ 0% |
tree_10000/ (allocs/op) | 460,223 allocs | 460,183 allocs | ⚪ 0% |
tree_edit_gc_100/ (ns/op) | 2.74 ms | 2.80 ms | 🔴 +2.20% |
tree_edit_gc_100/ (B/op) | 2.40 MB | 2.40 MB | ⚪ 0% |
tree_edit_gc_100/ (allocs/op) | 11,568 allocs | 11,568 allocs | ⚪ 0% |
tree_edit_gc_1000/ (ns/op) | 215.50 ms | 226.87 ms | 🔴 +5.28% |
tree_edit_gc_1000/ (B/op) | 213.99 MB | 213.99 MB | ⚪ 0% |
tree_edit_gc_1000/ (allocs/op) | 115,154 allocs | 115,152 allocs | ⚪ 0% |
tree_split_gc_100/ (ns/op) | 2.09 ms | 2.14 ms | 🔴 +2.35% |
tree_split_gc_100/ (B/op) | 1.62 MB | 1.62 MB | ⚪ 0% |
tree_split_gc_100/ (allocs/op) | 9,605 allocs | 9,605 allocs | ⚪ 0% |
tree_split_gc_1000/ (ns/op) | 152.16 ms | 163.42 ms | 🔴 +7.40% |
tree_split_gc_1000/ (B/op) | 149.90 MB | 149.90 MB | ⚪ 0% |
tree_split_gc_1000/ (allocs/op) | 107,760 allocs | 107,760 allocs | ⚪ 0% |
BenchmarkDocumentDeletion
Benchmark suite | Previous | Current | Change |
---|---|---|---|
single_text_delete_all_10000/ (ns/op) | 18.85 ms | 19.90 ms | 🔴 +5.56% |
single_text_delete_all_10000/ (B/op) | 10.82 MB | 10.81 MB | 🟢 -0.01% |
single_text_delete_all_10000/ (allocs/op) | 66,132 allocs | 66,127 allocs | ⚪ 0% |
single_text_delete_all_100000/ (ns/op) | 337.22 ms | 357.74 ms | 🔴 +6.08% |
single_text_delete_all_100000/ (B/op) | 107.92 MB | 107.89 MB | 🟢 -0.02% |
single_text_delete_all_100000/ (allocs/op) | 666,122 allocs | 666,004 allocs | 🟢 -0.02% |
single_tree_delete_all_1000/ (ns/op) | 54.59 ms | 54.20 ms | 🟢 -0.73% |
single_tree_delete_all_1000/ (B/op) | 44.69 MB | 44.69 MB | ⚪ 0% |
single_tree_delete_all_1000/ (allocs/op) | 57,201 allocs | 57,202 allocs | ⚪ 0% |
single_text_delete_range_100/ (ns/op) | 454370.00 ns | 453340.00 ns | 🟢 -0.23% |
single_text_delete_range_100/ (B/op) | 244.88 KB | 244.88 KB | ⚪ 0% |
single_text_delete_range_100/ (allocs/op) | 6,974 allocs | 6,974 allocs | ⚪ 0% |
single_text_delete_range_1000/ (ns/op) | 8.81 ms | 8.78 ms | 🟢 -0.41% |
single_text_delete_range_1000/ (B/op) | 6.39 MB | 6.39 MB | ⚪ 0% |
single_text_delete_range_1000/ (allocs/op) | 72,369 allocs | 72,369 allocs | ⚪ 0% |
single_tree_delete_range_100/ (ns/op) | 985274.00 ns | 990921.00 ns | 🔴 +0.57% |
single_tree_delete_range_100/ (B/op) | 711.66 KB | 711.61 KB | ⚪ 0% |
single_tree_delete_range_100/ (allocs/op) | 6,292 allocs | 6,292 allocs | ⚪ 0% |
single_tree_delete_range_1000/ (ns/op) | 64.22 ms | 62.50 ms | 🟢 -2.68% |
single_tree_delete_range_1000/ (B/op) | 54.54 MB | 54.54 MB | ⚪ 0% |
single_tree_delete_range_1000/ (allocs/op) | 62,430 allocs | 62,434 allocs | ⚪ 0% |
BenchmarkRPC
Benchmark suite | Previous | Current | Change |
---|---|---|---|
client_to_server/ (ns/op) | 298.71 ms | 298.84 ms | 🔴 +0.04% |
client_to_server/ (B/op) | 12.16 MB | 11.90 MB | 🟢 -2.11% |
client_to_server/ (allocs/op) | 178,820 allocs | 168,057 allocs | 🟢 -6.02% |
client_to_client_via_server/ (ns/op) | 218.64 ms | 218.01 ms | 🟢 -0.29% |
client_to_client_via_server/ (B/op) | 21.14 MB | 20.93 MB | 🟢 -1.01% |
client_to_client_via_server/ (allocs/op) | 296,733 allocs | 273,437 allocs | 🟢 -7.85% |
attach_large_document/ (ns/op) | 1.34 s | 1.37 s | 🔴 +2.62% |
attach_large_document/ (B/op) | 1.87 GB | 1.88 GB | 🔴 +0.12% |
attach_large_document/ (allocs/op) | 10,607 allocs | 10,949 allocs | 🔴 +3.22% |
adminCli_to_server/ (ns/op) | 574.81 ms | 576.77 ms | 🔴 +0.34% |
adminCli_to_server/ (B/op) | 21.58 MB | 21.58 MB | 🟢 -0.03% |
adminCli_to_server/ (allocs/op) | 317,801 allocs | 317,720 allocs | 🟢 -0.03% |
BenchmarkLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 84.83 ns | 96.17 ns | 🔴 +13.37% |
(B/op) | 32.00 B | 32.00 B | ⚪ 0% |
(allocs/op) | 1 allocs | 1 allocs | ⚪ 0% |
BenchmarkLockerParallel
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 46.08 ns | 46.54 ns | 🔴 +1.00% |
(B/op) | 0.00 B | 0.00 B | ⚪ 0% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkLockerMoreKeys
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 173.20 ns | 187.90 ns | 🔴 +8.49% |
(B/op) | 31.00 B | 31.00 B | ⚪ 0% |
(allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkRWLocker
Benchmark suite | Previous | Current | Change |
---|---|---|---|
RWLock_rate_2/ (ns/op) | 49.63 ns | 50.29 ns | 🔴 +1.33% |
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) | 44.42 ns | 44.51 ns | 🔴 +0.20% |
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) | 62.26 ns | 62.76 ns | 🔴 +0.80% |
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) | 92.45 ns | 90.65 ns | 🟢 -1.95% |
RWLock_rate_1000/ (B/op) | 8.00 B | 8.00 B | ⚪ 0% |
RWLock_rate_1000/ (allocs/op) | 0 allocs | 0 allocs | ⚪ 0% |
BenchmarkPresenceConcurrency
Benchmark suite | Previous | Current | Change |
---|---|---|---|
0-100-10/ (ns/op) | 1.05 s | 1.07 s | 🔴 +1.72% |
0-100-10/ (B/op) | 307.19 MB | 301.48 MB | 🟢 -1.86% |
0-100-10/ (allocs/op) | 4,767,009 allocs | 4,771,637 allocs | 🔴 +0.10% |
100-100-10/ (ns/op) | 1.10 s | 1.10 s | 🔴 +0.85% |
100-100-10/ (B/op) | 325.73 MB | 323.30 MB | 🟢 -0.75% |
100-100-10/ (allocs/op) | 5,321,474 allocs | 5,319,167 allocs | 🟢 -0.04% |
300-100-10/ (ns/op) | 1.16 s | 1.18 s | 🔴 +1.67% |
300-100-10/ (B/op) | 380.23 MB | 373.65 MB | 🟢 -1.73% |
300-100-10/ (allocs/op) | 6,431,052 allocs | 6,425,897 allocs | 🟢 -0.08% |
BenchmarkChange
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_10_Changes/ (ns/op) | 4.80 ms | 4.78 ms | 🟢 -0.44% |
Push_10_Changes/ (B/op) | 146.85 KB | 141.83 KB | 🟢 -3.42% |
Push_10_Changes/ (allocs/op) | 1,626 allocs | 1,518 allocs | 🟢 -6.64% |
Push_100_Changes/ (ns/op) | 18.64 ms | 18.80 ms | 🔴 +0.88% |
Push_100_Changes/ (B/op) | 774.43 KB | 734.85 KB | 🟢 -5.11% |
Push_100_Changes/ (allocs/op) | 8,868 allocs | 7,960 allocs | 🟢 -10.24% |
Push_1000_Changes/ (ns/op) | 151.76 ms | 150.62 ms | 🟢 -0.75% |
Push_1000_Changes/ (B/op) | 7.23 MB | 7.41 MB | 🔴 +2.37% |
Push_1000_Changes/ (allocs/op) | 83,257 allocs | 75,190 allocs | 🟢 -9.69% |
Pull_10_Changes/ (ns/op) | 3.59 ms | 3.61 ms | 🔴 +0.68% |
Pull_10_Changes/ (B/op) | 118.47 KB | 114.23 KB | 🟢 -3.58% |
Pull_10_Changes/ (allocs/op) | 1,335 allocs | 1,229 allocs | 🟢 -7.94% |
Pull_100_Changes/ (ns/op) | 5.72 ms | 5.54 ms | 🟢 -3.04% |
Pull_100_Changes/ (B/op) | 346.82 KB | 309.37 KB | 🟢 -10.80% |
Pull_100_Changes/ (allocs/op) | 4,967 allocs | 4,146 allocs | 🟢 -16.53% |
Pull_1000_Changes/ (ns/op) | 13.00 ms | 11.23 ms | 🟢 -13.61% |
Pull_1000_Changes/ (B/op) | 2.16 MB | 1.78 MB | 🟢 -17.77% |
Pull_1000_Changes/ (allocs/op) | 43,587 allocs | 34,903 allocs | 🟢 -19.92% |
BenchmarkSnapshot
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Push_3KB_snapshot/ (ns/op) | 22.35 ms | 22.16 ms | 🟢 -0.83% |
Push_3KB_snapshot/ (B/op) | 1.07 MB | 1.03 MB | 🟢 -3.96% |
Push_3KB_snapshot/ (allocs/op) | 11,404 allocs | 10,485 allocs | 🟢 -8.06% |
Push_30KB_snapshot/ (ns/op) | 160.74 ms | 158.43 ms | 🟢 -1.43% |
Push_30KB_snapshot/ (B/op) | 10.55 MB | 9.95 MB | 🟢 -5.67% |
Push_30KB_snapshot/ (allocs/op) | 130,051 allocs | 111,631 allocs | 🟢 -14.16% |
Pull_3KB_snapshot/ (ns/op) | 8.08 ms | 7.91 ms | 🟢 -2.11% |
Pull_3KB_snapshot/ (B/op) | 1.06 MB | 982.89 KB | 🟢 -7.05% |
Pull_3KB_snapshot/ (allocs/op) | 17,826 allocs | 16,191 allocs | 🟢 -9.17% |
Pull_30KB_snapshot/ (ns/op) | 22.21 ms | 20.28 ms | 🟢 -8.70% |
Pull_30KB_snapshot/ (B/op) | 8.85 MB | 8.08 MB | 🟢 -8.63% |
Pull_30KB_snapshot/ (allocs/op) | 171,832 allocs | 154,457 allocs | 🟢 -10.11% |
BenchmarkSplayTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
stress_test_100000/ (ns/op) | 0.18 ns | 0.18 ns | 🟢 -0.88% |
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.36 ns | 0.36 ns | 🟢 -1.89% |
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.55 ns | 0.54 ns | 🟢 -2.99% |
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.62% |
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.04 ns | 0.03 ns | 🟢 -8.91% |
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.06 ns | 0.04 ns | 🟢 -29.05% |
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.38% |
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) | 7212.00 ns | 7382.00 ns | 🔴 +2.36% |
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) | 57192.00 ns | 57565.00 ns | 🔴 +0.65% |
memory_sync_100_test/ (B/op) | 9.50 KB | 9.51 KB | 🔴 +0.16% |
memory_sync_100_test/ (allocs/op) | 268 allocs | 268 allocs | ⚪ 0% |
memory_sync_1000_test/ (ns/op) | 605985.00 ns | 614230.00 ns | 🔴 +1.36% |
memory_sync_1000_test/ (B/op) | 76.62 KB | 76.70 KB | 🔴 +0.10% |
memory_sync_1000_test/ (allocs/op) | 2,133 allocs | 2,136 allocs | 🔴 +0.14% |
memory_sync_10000_test/ (ns/op) | 7.55 ms | 7.83 ms | 🔴 +3.78% |
memory_sync_10000_test/ (B/op) | 776.46 KB | 763.33 KB | 🟢 -1.69% |
memory_sync_10000_test/ (allocs/op) | 20,690 allocs | 20,512 allocs | 🟢 -0.86% |
BenchmarkSyncConcurrency
Benchmark suite | Previous | Current | Change |
---|---|---|---|
1-100-10/ (ns/op) | 11.63 s | 9.57 s | 🟢 -17.75% |
1-100-10/ (B/op) | 7.56 GB | 5.97 GB | 🟢 -21.05% |
1-100-10/ (allocs/op) | 157,899,480 allocs | 111,042,649 allocs | 🟢 -29.68% |
100-100-10/ (ns/op) | 12.91 s | 10.80 s | 🟢 -16.34% |
100-100-10/ (B/op) | 7.68 GB | 6.11 GB | 🟢 -20.44% |
100-100-10/ (allocs/op) | 159,885,490 allocs | 112,962,477 allocs | 🟢 -29.35% |
300_100-10/ (ns/op) | 15.33 s | 13.30 s | 🟢 -13.29% |
300_100-10/ (B/op) | 8.00 GB | 6.40 GB | 🟢 -19.90% |
300_100-10/ (allocs/op) | 164,982,135 allocs | 117,772,659 allocs | 🟢 -28.61% |
BenchmarkTextEditing
Benchmark suite | Previous | Current | Change |
---|---|---|---|
(ns/op) | 6.02 s | 5.86 s | 🟢 -2.79% |
(B/op) | 3.89 GB | 3.89 GB | ⚪ 0% |
(allocs/op) | 20,282,835 allocs | 20,282,734 allocs | ⚪ 0% |
BenchmarkTree
Benchmark suite | Previous | Current | Change |
---|---|---|---|
10000_vertices_to_protobuf/ (ns/op) | 5.02 ms | 5.13 ms | 🔴 +2.13% |
10000_vertices_to_protobuf/ (B/op) | 6.68 MB | 6.68 MB | ⚪ 0% |
10000_vertices_to_protobuf/ (allocs/op) | 90,026 allocs | 90,026 allocs | ⚪ 0% |
10000_vertices_from_protobuf/ (ns/op) | 232.29 ms | 230.95 ms | 🟢 -0.58% |
10000_vertices_from_protobuf/ (B/op) | 442.15 MB | 442.15 MB | ⚪ 0% |
10000_vertices_from_protobuf/ (allocs/op) | 280,047 allocs | 280,054 allocs | ⚪ 0% |
20000_vertices_to_protobuf/ (ns/op) | 10.29 ms | 10.69 ms | 🔴 +3.91% |
20000_vertices_to_protobuf/ (B/op) | 13.53 MB | 13.53 MB | ⚪ 0% |
20000_vertices_to_protobuf/ (allocs/op) | 180,030 allocs | 180,029 allocs | ⚪ 0% |
20000_vertices_from_protobuf/ (ns/op) | 902.11 ms | 881.68 ms | 🟢 -2.26% |
20000_vertices_from_protobuf/ (B/op) | 1.70 GB | 1.70 GB | ⚪ 0% |
20000_vertices_from_protobuf/ (allocs/op) | 560,124 allocs | 560,076 allocs | ⚪ 0% |
30000_vertices_to_protobuf/ (ns/op) | 15.98 ms | 16.06 ms | 🔴 +0.55% |
30000_vertices_to_protobuf/ (B/op) | 19.94 MB | 19.94 MB | ⚪ 0% |
30000_vertices_to_protobuf/ (allocs/op) | 270,030 allocs | 270,030 allocs | ⚪ 0% |
30000_vertices_from_protobuf/ (ns/op) | 2.02 s | 2.01 s | 🟢 -0.44% |
30000_vertices_from_protobuf/ (B/op) | 3.75 GB | 3.75 GB | ⚪ 0% |
30000_vertices_from_protobuf/ (allocs/op) | 840,125 allocs | 840,122 allocs | ⚪ 0% |
BenchmarkVersionVector
Benchmark suite | Previous | Current | Change |
---|---|---|---|
clients_10/ (ns/op) | 130.50 ms | 128.95 ms | 🟢 -1.19% |
clients_10/ (1_changepack(bytes)) | 202.00 B | 202.00 B | ⚪ 0% |
clients_10/ (2_snapshot(bytes)) | 399.00 B | 399.00 B | ⚪ 0% |
clients_10/ (3_pushpull(ms)) | 5.00 ms | 5.00 ms | ⚪ 0% |
clients_10/ (4_attach(ms)) | 5.00 ms | 5.00 ms | ⚪ 0% |
clients_10/ (5_changepack_after_detach(bytes)) | 262.00 B | 262.00 B | ⚪ 0% |
clients_10/ (6_snapshot_after_detach(bytes)) | 156.00 B | 156.00 B | ⚪ 0% |
clients_10/ (7_pushpull_after_detach(ms)) | 5.00 ms | 5.00 ms | ⚪ 0% |
clients_10/ (B/op) | 7.25 MB | 7.24 MB | 🟢 -0.07% |
clients_10/ (allocs/op) | 57,990 allocs | 57,825 allocs | 🟢 -0.28% |
clients_100/ (ns/op) | 1.08 s | 1.09 s | 🔴 +1.58% |
clients_100/ (1_changepack(bytes)) | 202.00 B | 202.00 B | ⚪ 0% |
clients_100/ (2_snapshot(bytes)) | 3.10 KB | 3.10 KB | ⚪ 0% |
clients_100/ (3_pushpull(ms)) | 5.00 ms | 5.00 ms | ⚪ 0% |
clients_100/ (4_attach(ms)) | 7.00 ms | 7.00 ms | ⚪ 0% |
clients_100/ (5_changepack_after_detach(bytes)) | 263.00 B | 263.00 B | ⚪ 0% |
clients_100/ (6_snapshot_after_detach(bytes)) | 156.00 B | 156.00 B | ⚪ 0% |
clients_100/ (7_pushpull_after_detach(ms)) | 5.00 ms | 5.00 ms | ⚪ 0% |
clients_100/ (B/op) | 69.59 MB | 71.12 MB | 🔴 +2.21% |
clients_100/ (allocs/op) | 711,438 allocs | 711,252 allocs | 🟢 -0.03% |
clients_1000/ (ns/op) | 14.67 s | 14.54 s | 🟢 -0.85% |
clients_1000/ (1_changepack(bytes)) | 203.00 B | 203.00 B | ⚪ 0% |
clients_1000/ (2_snapshot(bytes)) | 30.10 KB | 30.10 KB | ⚪ 0% |
clients_1000/ (3_pushpull(ms)) | 5.00 ms | 5.00 ms | ⚪ 0% |
clients_1000/ (4_attach(ms)) | 21.00 ms | 23.00 ms | 🔴 +9.52% |
clients_1000/ (5_changepack_after_detach(bytes)) | 263.00 B | 263.00 B | ⚪ 0% |
clients_1000/ (6_snapshot_after_detach(bytes)) | 156.00 B | 156.00 B | ⚪ 0% |
clients_1000/ (7_pushpull_after_detach(ms)) | 5.00 ms | 6.00 ms | 🔴 +20.00% |
clients_1000/ (B/op) | 1.96 GB | 1.94 GB | 🟢 -1.35% |
clients_1000/ (allocs/op) | 32,363,952 allocs | 31,873,460 allocs | 🟢 -1.52% |
BenchmarkWebhook
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Send_10_Webhooks_to_10_Endpoints/ (ns/op) | 12.53 ms | 12.50 ms | 🟢 -0.27% |
Send_10_Webhooks_to_10_Endpoints/ (B/op) | 808.49 KB | 808.28 KB | 🟢 -0.03% |
Send_10_Webhooks_to_10_Endpoints/ (allocs/op) | 10,117 allocs | 10,116 allocs | ⚪ 0% |
Send_100_Webhooks_to_10_Endpoints/ (ns/op) | 125.05 ms | 123.41 ms | 🟢 -1.31% |
Send_100_Webhooks_to_10_Endpoints/ (B/op) | 8.09 MB | 8.08 MB | 🟢 -0.06% |
Send_100_Webhooks_to_10_Endpoints/ (allocs/op) | 101,170 allocs | 101,164 allocs | ⚪ 0% |
Send_10_Webhooks_to_100_Endpoints/ (ns/op) | 130.19 ms | 126.50 ms | 🟢 -2.84% |
Send_10_Webhooks_to_100_Endpoints/ (B/op) | 8.28 MB | 8.28 MB | 🔴 +0.03% |
Send_10_Webhooks_to_100_Endpoints/ (allocs/op) | 102,531 allocs | 102,538 allocs | ⚪ 0% |
Send_100_Webhooks_to_100_Endpoints/ (ns/op) | 1.27 s | 1.26 s | 🟢 -1.34% |
Send_100_Webhooks_to_100_Endpoints/ (B/op) | 82.38 MB | 82.37 MB | 🟢 -0.02% |
Send_100_Webhooks_to_100_Endpoints/ (allocs/op) | 1,022,407 allocs | 1,022,430 allocs | ⚪ 0% |
Send_10_Webhooks_to_1000_Endpoints/ (ns/op) | 2.83 s | 2.80 s | 🟢 -1.11% |
Send_10_Webhooks_to_1000_Endpoints/ (B/op) | 209.53 MB | 209.62 MB | 🔴 +0.04% |
Send_10_Webhooks_to_1000_Endpoints/ (allocs/op) | 1,716,446 allocs | 1,716,708 allocs | 🔴 +0.02% |
BenchmarkWebhookWithLimit
Benchmark suite | Previous | Current | Change |
---|---|---|---|
Send_10_Webhooks_to_10_Endpoints_with_limit/ (ns/op) | 3.78 ms | 3.83 ms | 🔴 +1.43% |
Send_10_Webhooks_to_10_Endpoints_with_limit/ (B/op) | 306.33 KB | 306.61 KB | 🔴 +0.09% |
Send_10_Webhooks_to_10_Endpoints_with_limit/ (allocs/op) | 2,913 allocs | 2,913 allocs | ⚪ 0% |
Send_100_Webhooks_to_10_Endpoints_with_limit/ (ns/op) | 4.14 ms | 4.07 ms | 🟢 -1.56% |
Send_100_Webhooks_to_10_Endpoints_with_limit/ (B/op) | 428.88 KB | 428.90 KB | ⚪ 0% |
Send_100_Webhooks_to_10_Endpoints_with_limit/ (allocs/op) | 4,714 allocs | 4,714 allocs | ⚪ 0% |
Send_10_Webhooks_to_100_Endpoints_with_limit/ (ns/op) | 38.39 ms | 37.97 ms | 🟢 -1.10% |
Send_10_Webhooks_to_100_Endpoints_with_limit/ (B/op) | 3.08 MB | 3.08 MB | ⚪ 0% |
Send_10_Webhooks_to_100_Endpoints_with_limit/ (allocs/op) | 29,176 allocs | 29,173 allocs | 🟢 -0.01% |
Send_100_Webhooks_to_100_Endpoints_with_limit/ (ns/op) | 41.52 ms | 41.33 ms | 🟢 -0.46% |
Send_100_Webhooks_to_100_Endpoints_with_limit/ (B/op) | 4.37 MB | 4.37 MB | 🔴 +0.02% |
Send_100_Webhooks_to_100_Endpoints_with_limit/ (allocs/op) | 47,190 allocs | 47,190 allocs | ⚪ 0% |
Send_10_Webhooks_to_1000_Endpoints_with_limit/ (ns/op) | 371.65 ms | 383.67 ms | 🔴 +3.23% |
Send_10_Webhooks_to_1000_Endpoints_with_limit/ (B/op) | 44.50 MB | 44.52 MB | 🔴 +0.05% |
Send_10_Webhooks_to_1000_Endpoints_with_limit/ (allocs/op) | 380,157 allocs | 380,157 allocs | ⚪ 0% |
ee9bbd2
to
a98ac24
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.
k6 Load Test 📊
This is a comparison result between the previous(70f2f95) and the current commit(ae9747e).
Change
Metric | Previous | Current | Change |
---|---|---|---|
transaction_time.avg | 5883.15 | 5885.20 | 🔴 +0.03% |
http_req_duration.avg | 283.04 | 277.64 | 🟢 -1.91% |
http_req_duration.p(95) | 1424.48 | 1404.16 | 🟢 -1.43% |
iteration_duration.avg | 5883.19 | 5885.24 | 🔴 +0.03% |
data_received.count | 859,797,038 | 873,540,653 | 🔴 +1.60% |
data_sent.count | 58,855,677 | 59,218,337 | 🔴 +0.62% |
Result
script: test/k6/presence.ts
scenarios: (100.00%) 1 scenario, 500 max VUs, 3m0s max duration (incl. graceful stop):
* default: Up to 500 looping VUs for 2m30s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)
█ THRESHOLDS
control_doc_latency
✓ 'p(95)<500' p(95)=0
http_req_duration
✓ 'p(95)<10000' p(95)=1.4s
transaction_success_rate
✓ 'rate>0.99' rate=100.00%
█ TOTAL RESULTS
checks_total.......................: 126354 818.417155/s
checks_succeeded...................: 100.00% 126354 out of 126354
checks_failed......................: 0.00% 0 out of 126354
✓ status is 200
✓ response has valid body
CUSTOM
active_clients..........................................................: 9142 59.214347/s
attach_documents........................................................: 9142 59.214347/s
control_doc_latency.....................................................: avg=0 min=0 med=0 max=0 p(90)=0 p(95)=0
pushpulls...............................................................: 35751 231.565536/s
transaction_success_rate................................................: 100.00% 9142 out of 9142
transaction_time........................................................: avg=5885.200941 min=3020 med=6025 max=9378 p(90)=7834.9 p(95)=8128.95
HTTP
http_req_duration.......................................................: avg=277.64ms min=990.12µs med=21.28ms max=1.88s p(90)=1.29s p(95)=1.4s
{ expected_response:true }............................................: avg=277.64ms min=990.12µs med=21.28ms max=1.88s p(90)=1.29s p(95)=1.4s
http_req_failed.........................................................: 0.00% 0 out of 63177
http_reqs...............................................................: 63177 409.208578/s
EXECUTION
iteration_duration......................................................: avg=5.88s min=3.02s med=6.02s max=9.37s p(90)=7.83s p(95)=8.12s
iterations..............................................................: 9142 59.214347/s
vus.....................................................................: 1 min=1 max=500
vus_max.................................................................: 500 min=500 max=500
NETWORK
data_received...........................................................: 874 MB 5.7 MB/s
data_sent...............................................................: 59 MB 384 kB/s
What this PR does / why we need it:
Add dedicated VV encoder/decoder
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
New Features
Refactor