Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Optimize Minimum VersionVector Computation for Performance #1153

Merged
merged 4 commits into from
Feb 17, 2025

Conversation

chacha912
Copy link
Contributor

@chacha912 chacha912 commented Feb 16, 2025

What this PR does / why we need it:

This PR optimizes the minimum version vector (MinVV) computation.
The comparison results of BenchmarkVersionVector test with 1000 clients are as follows:

Metric Before After Change
Execution Time 72.28s 57.48s -20.5%
Memory Usage 46.79 GB 19.85 GB -57.6%
Allocation Count 108.58M 94.51M -13.0%
Push/Pull Time 165 ms 79 ms -52.1%
Attach Time 153 ms 145 ms -5.2%
Post-detach Push/Pull 38 ms 33 ms -13.2%
  • Memory Optimization: Reduced memory usage by 57.6% (from 46.79GB to 19.85GB)
  • Push/Pull Performance: Improved push/pull operation speed by 52.1%
  • Overall Time: Decreased total execution time by 20.5%
cpu.prof mem.prof
image image

Which issue(s) this PR fixes:

Fixes #1152

Special notes for your reviewer:

Does this PR introduce a user-facing change?:


Additional documentation:


Checklist:

  • Added relevant tests or not required
  • Addressed and resolved all CodeRabbit review comments
  • Didn't break anything

Summary by CodeRabbit

  • Tests
    • Added new test functions to validate the behavior of VersionVector and FindMinVersionVector methods, covering various scenarios for improved test coverage.
  • Refactor
    • Enhanced the logic for computing minimum version vectors, improving clarity and maintainability while ensuring consistent functionality.
  • New Features
    • Introduced a new helper function to create a VersionVector from a collection of actors and their timestamps.

Copy link

coderabbitai bot commented Feb 16, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This pull request introduces new test files and functions to validate the behavior of the VersionVector implementation, specifically its Min method and the related FindMinVersionVector functionality. It also refactors the version vector computation in both in-memory and MongoDB database clients to delegate the minimum calculation to a newly added helper. Additionally, a new helper function is provided to create a VersionVector from actor timestamp mappings, streamlining the version vector generation process.

Changes

File(s) Change Summary
pkg/document/time/version_vector_test.go
server/backend/database/database_test.go
Added test functions to validate the VersionVector.Min and FindMinVersionVector behaviors with various test cases.
server/backend/database/memory/database.go
server/backend/database/mongo/client.go
Refactored UpdateAndFindMinSyncedVersionVector methods to use the new FindMinVersionVector helper function, streamlining the minimum version vector computation.
server/backend/database/version_vector.go Added a new function FindMinVersionVector to compute the minimum version vector from a set of version vectors while optionally excluding a client ID.
test/helper/helper.go Added a helper function VersionVectorOf to create a VersionVector from actor-to-timestamp mappings.

Sequence Diagram(s)

sequenceDiagram
    participant Caller as Client/Caller
    participant DB as Database (Memory/Mongo)
    participant FV as FindMinVersionVector

    Caller->>DB: Call UpdateAndFindMinSyncedVersionVector(...)
    DB->>DB: Gather version vector infos
    DB->>FV: Delegate computation of minimum version vector
    FV-->>DB: Return computed minimum vector
    DB->>DB: Compare with current client vector (update if needed)
    DB->>Caller: Return the final minimum version vector
Loading

Possibly related PRs

  • Optimize Minimum VersionVector Computation for Performance #1153: The changes in the main PR are related to the FindMinVersionVector function, which is also modified in the retrieved PR, indicating a direct connection in the testing and functionality of version vector computations.
  • Introduce VersionVector #1047: The changes in the main PR, which introduce a test suite for the VersionVector functionality, are related to the modifications in the retrieved PR that implements the VersionVector feature, as both involve the same core functionality of version vectors and their testing.
  • Preserve Detached Client's Lamport in Version Vector #1090: The changes in the main PR, which focus on testing the Min method of VersionVector, are related to the modifications in the retrieved PR that involve filtering version vectors and handling detached clients, as both deal with the functionality of version vectors in the context of their minimum calculations.

Suggested reviewers

  • JOOHOJANG

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8c8c68 and 3d12610.

📒 Files selected for processing (3)
  • pkg/document/time/version_vector_test.go (1 hunks)
  • server/backend/database/database_test.go (2 hunks)
  • test/helper/helper.go (1 hunks)

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?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a 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

🧹 Nitpick comments (1)
server/backend/database/version_vector.go (1)

35-64: Consider pre-allocating the map for better performance.

The implementation is correct and aligns with the PR's performance optimization goals. However, since we're dealing with version vectors in a performance-critical context, we could further optimize by pre-allocating the map with an estimated capacity.

Apply this diff to pre-allocate the map:

 func FindMinVersionVector(vvInfos []VersionVectorInfo, excludeClientID types.ID) time.VersionVector {
 	var minVV time.VersionVector
 
 	for _, vvi := range vvInfos {
 		if vvi.ClientID == excludeClientID {
 			continue
 		}
 
 		if minVV == nil {
-			minVV = vvi.VersionVector.DeepCopy()
+			// Pre-allocate with the size of the first vector
+			minVV = make(time.VersionVector, len(vvi.VersionVector))
+			for k, v := range vvi.VersionVector {
+				minVV[k] = v
+			}
 			continue
 		}
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d49a4bb and d8c8c68.

📒 Files selected for processing (6)
  • pkg/document/time/version_vector_test.go (1 hunks)
  • server/backend/database/database_test.go (2 hunks)
  • server/backend/database/memory/database.go (1 hunks)
  • server/backend/database/mongo/client.go (1 hunks)
  • server/backend/database/version_vector.go (1 hunks)
  • test/helper/helper.go (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: build
  • GitHub Check: bench
  • GitHub Check: complex-test
🔇 Additional comments (6)
server/backend/database/version_vector.go (1)

33-35: LGTM! Clear and concise function documentation.

The documentation clearly describes the function's purpose and behavior.

pkg/document/time/version_vector_test.go (1)

12-92: LGTM! Comprehensive test coverage.

The test cases are well-structured and cover essential scenarios including edge cases:

  • Empty vectors
  • One-sided vectors
  • Same keys with different values
  • Different keys
server/backend/database/database_test.go (1)

46-181: LGTM! Thorough test coverage with edge cases.

The test cases provide excellent coverage of the FindMinVersionVector function, including:

  • Empty inputs
  • Single client scenarios
  • Client exclusion logic
  • Different actor combinations
  • Edge cases like excluding all clients
test/helper/helper.go (1)

159-166: LGTM! Clean and focused helper function.

The function provides a convenient way to create version vectors for testing purposes.

server/backend/database/memory/database.go (1)

1363-1376: Great refactoring of the minimum version vector computation!

The changes improve both performance and code clarity by:

  1. Using a dedicated helper function FindMinVersionVector for computing the minimum version vector.
  2. Simplifying the logic for combining the minimum version vector with the current client's version vector.

These changes contribute to the impressive performance improvements shown in the benchmarks.

server/backend/database/mongo/client.go (1)

1261-1268: Excellent consistency in the MongoDB implementation!

The changes mirror the memory database implementation, ensuring consistent behavior across storage backends. The use of FindMinVersionVector helper maintains code uniformity while contributing to the performance improvements.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Go Benchmark

Benchmark suite Current: 3d12610 Previous: d3b6652 Ratio
BenchmarkDocument/constructor_test 1440 ns/op 1385 B/op 24 allocs/op 1508 ns/op 1385 B/op 24 allocs/op 0.95
BenchmarkDocument/constructor_test - ns/op 1440 ns/op 1508 ns/op 0.95
BenchmarkDocument/constructor_test - B/op 1385 B/op 1385 B/op 1
BenchmarkDocument/constructor_test - allocs/op 24 allocs/op 24 allocs/op 1
BenchmarkDocument/status_test 1067 ns/op 1353 B/op 22 allocs/op 1029 ns/op 1353 B/op 22 allocs/op 1.04
BenchmarkDocument/status_test - ns/op 1067 ns/op 1029 ns/op 1.04
BenchmarkDocument/status_test - B/op 1353 B/op 1353 B/op 1
BenchmarkDocument/status_test - allocs/op 22 allocs/op 22 allocs/op 1
BenchmarkDocument/equals_test 7830 ns/op 7562 B/op 129 allocs/op 7760 ns/op 7562 B/op 129 allocs/op 1.01
BenchmarkDocument/equals_test - ns/op 7830 ns/op 7760 ns/op 1.01
BenchmarkDocument/equals_test - B/op 7562 B/op 7562 B/op 1
BenchmarkDocument/equals_test - allocs/op 129 allocs/op 129 allocs/op 1
BenchmarkDocument/nested_update_test 17059 ns/op 12307 B/op 258 allocs/op 16856 ns/op 12307 B/op 258 allocs/op 1.01
BenchmarkDocument/nested_update_test - ns/op 17059 ns/op 16856 ns/op 1.01
BenchmarkDocument/nested_update_test - B/op 12307 B/op 12307 B/op 1
BenchmarkDocument/nested_update_test - allocs/op 258 allocs/op 258 allocs/op 1
BenchmarkDocument/delete_test 22771 ns/op 15788 B/op 339 allocs/op 22832 ns/op 15788 B/op 339 allocs/op 1.00
BenchmarkDocument/delete_test - ns/op 22771 ns/op 22832 ns/op 1.00
BenchmarkDocument/delete_test - B/op 15788 B/op 15788 B/op 1
BenchmarkDocument/delete_test - allocs/op 339 allocs/op 339 allocs/op 1
BenchmarkDocument/object_test 8548 ns/op 7033 B/op 118 allocs/op 8576 ns/op 7033 B/op 118 allocs/op 1.00
BenchmarkDocument/object_test - ns/op 8548 ns/op 8576 ns/op 1.00
BenchmarkDocument/object_test - B/op 7033 B/op 7033 B/op 1
BenchmarkDocument/object_test - allocs/op 118 allocs/op 118 allocs/op 1
BenchmarkDocument/array_test 30258 ns/op 12139 B/op 273 allocs/op 33291 ns/op 12139 B/op 273 allocs/op 0.91
BenchmarkDocument/array_test - ns/op 30258 ns/op 33291 ns/op 0.91
BenchmarkDocument/array_test - B/op 12139 B/op 12139 B/op 1
BenchmarkDocument/array_test - allocs/op 273 allocs/op 273 allocs/op 1
BenchmarkDocument/text_test 33943 ns/op 15188 B/op 484 allocs/op 32087 ns/op 15188 B/op 484 allocs/op 1.06
BenchmarkDocument/text_test - ns/op 33943 ns/op 32087 ns/op 1.06
BenchmarkDocument/text_test - B/op 15188 B/op 15188 B/op 1
BenchmarkDocument/text_test - allocs/op 484 allocs/op 484 allocs/op 1
BenchmarkDocument/text_composition_test 31638 ns/op 18701 B/op 501 allocs/op 31523 ns/op 18701 B/op 501 allocs/op 1.00
BenchmarkDocument/text_composition_test - ns/op 31638 ns/op 31523 ns/op 1.00
BenchmarkDocument/text_composition_test - B/op 18701 B/op 18701 B/op 1
BenchmarkDocument/text_composition_test - allocs/op 501 allocs/op 501 allocs/op 1
BenchmarkDocument/rich_text_test 85810 ns/op 39357 B/op 1146 allocs/op 88200 ns/op 39356 B/op 1146 allocs/op 0.97
BenchmarkDocument/rich_text_test - ns/op 85810 ns/op 88200 ns/op 0.97
BenchmarkDocument/rich_text_test - B/op 39357 B/op 39356 B/op 1.00
BenchmarkDocument/rich_text_test - allocs/op 1146 allocs/op 1146 allocs/op 1
BenchmarkDocument/counter_test 18261 ns/op 11811 B/op 253 allocs/op 18087 ns/op 11810 B/op 253 allocs/op 1.01
BenchmarkDocument/counter_test - ns/op 18261 ns/op 18087 ns/op 1.01
BenchmarkDocument/counter_test - B/op 11811 B/op 11810 B/op 1.00
BenchmarkDocument/counter_test - allocs/op 253 allocs/op 253 allocs/op 1
BenchmarkDocument/text_edit_gc_100 1392021 ns/op 864918 B/op 17282 allocs/op 1385979 ns/op 864862 B/op 17281 allocs/op 1.00
BenchmarkDocument/text_edit_gc_100 - ns/op 1392021 ns/op 1385979 ns/op 1.00
BenchmarkDocument/text_edit_gc_100 - B/op 864918 B/op 864862 B/op 1.00
BenchmarkDocument/text_edit_gc_100 - allocs/op 17282 allocs/op 17281 allocs/op 1.00
BenchmarkDocument/text_edit_gc_1000 52419001 ns/op 46837956 B/op 185589 allocs/op 52998071 ns/op 46839657 B/op 185597 allocs/op 0.99
BenchmarkDocument/text_edit_gc_1000 - ns/op 52419001 ns/op 52998071 ns/op 0.99
BenchmarkDocument/text_edit_gc_1000 - B/op 46837956 B/op 46839657 B/op 1.00
BenchmarkDocument/text_edit_gc_1000 - allocs/op 185589 allocs/op 185597 allocs/op 1.00
BenchmarkDocument/text_split_gc_100 2111490 ns/op 1581023 B/op 15951 allocs/op 2103673 ns/op 1581009 B/op 15951 allocs/op 1.00
BenchmarkDocument/text_split_gc_100 - ns/op 2111490 ns/op 2103673 ns/op 1.00
BenchmarkDocument/text_split_gc_100 - B/op 1581023 B/op 1581009 B/op 1.00
BenchmarkDocument/text_split_gc_100 - allocs/op 15951 allocs/op 15951 allocs/op 1
BenchmarkDocument/text_split_gc_1000 129382919 ns/op 137788758 B/op 184999 allocs/op 127632997 ns/op 137789162 B/op 184994 allocs/op 1.01
BenchmarkDocument/text_split_gc_1000 - ns/op 129382919 ns/op 127632997 ns/op 1.01
BenchmarkDocument/text_split_gc_1000 - B/op 137788758 B/op 137789162 B/op 1.00
BenchmarkDocument/text_split_gc_1000 - allocs/op 184999 allocs/op 184994 allocs/op 1.00
BenchmarkDocument/text_delete_all_10000 16978694 ns/op 10577352 B/op 56137 allocs/op 16934522 ns/op 10575875 B/op 56133 allocs/op 1.00
BenchmarkDocument/text_delete_all_10000 - ns/op 16978694 ns/op 16934522 ns/op 1.00
BenchmarkDocument/text_delete_all_10000 - B/op 10577352 B/op 10575875 B/op 1.00
BenchmarkDocument/text_delete_all_10000 - allocs/op 56137 allocs/op 56133 allocs/op 1.00
BenchmarkDocument/text_delete_all_100000 296716280 ns/op 105540408 B/op 565993 allocs/op 257265365 ns/op 105532240 B/op 566059 allocs/op 1.15
BenchmarkDocument/text_delete_all_100000 - ns/op 296716280 ns/op 257265365 ns/op 1.15
BenchmarkDocument/text_delete_all_100000 - B/op 105540408 B/op 105532240 B/op 1.00
BenchmarkDocument/text_delete_all_100000 - allocs/op 565993 allocs/op 566059 allocs/op 1.00
BenchmarkDocument/text_100 231939 ns/op 120906 B/op 5181 allocs/op 244866 ns/op 120906 B/op 5181 allocs/op 0.95
BenchmarkDocument/text_100 - ns/op 231939 ns/op 244866 ns/op 0.95
BenchmarkDocument/text_100 - B/op 120906 B/op 120906 B/op 1
BenchmarkDocument/text_100 - allocs/op 5181 allocs/op 5181 allocs/op 1
BenchmarkDocument/text_1000 2487599 ns/op 1156078 B/op 51084 allocs/op 2544670 ns/op 1156064 B/op 51084 allocs/op 0.98
BenchmarkDocument/text_1000 - ns/op 2487599 ns/op 2544670 ns/op 0.98
BenchmarkDocument/text_1000 - B/op 1156078 B/op 1156064 B/op 1.00
BenchmarkDocument/text_1000 - allocs/op 51084 allocs/op 51084 allocs/op 1
BenchmarkDocument/array_1000 1253867 ns/op 1088066 B/op 11879 allocs/op 1283484 ns/op 1088363 B/op 11880 allocs/op 0.98
BenchmarkDocument/array_1000 - ns/op 1253867 ns/op 1283484 ns/op 0.98
BenchmarkDocument/array_1000 - B/op 1088066 B/op 1088363 B/op 1.00
BenchmarkDocument/array_1000 - allocs/op 11879 allocs/op 11880 allocs/op 1.00
BenchmarkDocument/array_10000 13447866 ns/op 9887983 B/op 120730 allocs/op 13338688 ns/op 9886809 B/op 120725 allocs/op 1.01
BenchmarkDocument/array_10000 - ns/op 13447866 ns/op 13338688 ns/op 1.01
BenchmarkDocument/array_10000 - B/op 9887983 B/op 9886809 B/op 1.00
BenchmarkDocument/array_10000 - allocs/op 120730 allocs/op 120725 allocs/op 1.00
BenchmarkDocument/array_gc_100 134200 ns/op 99897 B/op 1266 allocs/op 138029 ns/op 99890 B/op 1266 allocs/op 0.97
BenchmarkDocument/array_gc_100 - ns/op 134200 ns/op 138029 ns/op 0.97
BenchmarkDocument/array_gc_100 - B/op 99897 B/op 99890 B/op 1.00
BenchmarkDocument/array_gc_100 - allocs/op 1266 allocs/op 1266 allocs/op 1
BenchmarkDocument/array_gc_1000 1454434 ns/op 1140791 B/op 12926 allocs/op 1469874 ns/op 1140898 B/op 12926 allocs/op 0.99
BenchmarkDocument/array_gc_1000 - ns/op 1454434 ns/op 1469874 ns/op 0.99
BenchmarkDocument/array_gc_1000 - B/op 1140791 B/op 1140898 B/op 1.00
BenchmarkDocument/array_gc_1000 - allocs/op 12926 allocs/op 12926 allocs/op 1
BenchmarkDocument/counter_1000 206452 ns/op 178137 B/op 5771 allocs/op 209646 ns/op 178135 B/op 5771 allocs/op 0.98
BenchmarkDocument/counter_1000 - ns/op 206452 ns/op 209646 ns/op 0.98
BenchmarkDocument/counter_1000 - B/op 178137 B/op 178135 B/op 1.00
BenchmarkDocument/counter_1000 - allocs/op 5771 allocs/op 5771 allocs/op 1
BenchmarkDocument/counter_10000 2163604 ns/op 2068954 B/op 59778 allocs/op 2189075 ns/op 2068968 B/op 59778 allocs/op 0.99
BenchmarkDocument/counter_10000 - ns/op 2163604 ns/op 2189075 ns/op 0.99
BenchmarkDocument/counter_10000 - B/op 2068954 B/op 2068968 B/op 1.00
BenchmarkDocument/counter_10000 - allocs/op 59778 allocs/op 59778 allocs/op 1
BenchmarkDocument/object_1000 1438494 ns/op 1437085 B/op 9925 allocs/op 1464426 ns/op 1437302 B/op 9925 allocs/op 0.98
BenchmarkDocument/object_1000 - ns/op 1438494 ns/op 1464426 ns/op 0.98
BenchmarkDocument/object_1000 - B/op 1437085 B/op 1437302 B/op 1.00
BenchmarkDocument/object_1000 - allocs/op 9925 allocs/op 9925 allocs/op 1
BenchmarkDocument/object_10000 14997540 ns/op 12348337 B/op 101220 allocs/op 14832648 ns/op 12349861 B/op 101227 allocs/op 1.01
BenchmarkDocument/object_10000 - ns/op 14997540 ns/op 14832648 ns/op 1.01
BenchmarkDocument/object_10000 - B/op 12348337 B/op 12349861 B/op 1.00
BenchmarkDocument/object_10000 - allocs/op 101220 allocs/op 101227 allocs/op 1.00
BenchmarkDocument/tree_100 1082151 ns/op 951028 B/op 6102 allocs/op 1077993 ns/op 951036 B/op 6102 allocs/op 1.00
BenchmarkDocument/tree_100 - ns/op 1082151 ns/op 1077993 ns/op 1.00
BenchmarkDocument/tree_100 - B/op 951028 B/op 951036 B/op 1.00
BenchmarkDocument/tree_100 - allocs/op 6102 allocs/op 6102 allocs/op 1
BenchmarkDocument/tree_1000 79260790 ns/op 86582426 B/op 60112 allocs/op 79586739 ns/op 86581797 B/op 60111 allocs/op 1.00
BenchmarkDocument/tree_1000 - ns/op 79260790 ns/op 79586739 ns/op 1.00
BenchmarkDocument/tree_1000 - B/op 86582426 B/op 86581797 B/op 1.00
BenchmarkDocument/tree_1000 - allocs/op 60112 allocs/op 60111 allocs/op 1.00
BenchmarkDocument/tree_10000 9617221968 ns/op 8581182080 B/op 600194 allocs/op 9567637461 ns/op 8581198384 B/op 600193 allocs/op 1.01
BenchmarkDocument/tree_10000 - ns/op 9617221968 ns/op 9567637461 ns/op 1.01
BenchmarkDocument/tree_10000 - B/op 8581182080 B/op 8581198384 B/op 1.00
BenchmarkDocument/tree_10000 - allocs/op 600194 allocs/op 600193 allocs/op 1.00
BenchmarkDocument/tree_delete_all_1000 77080637 ns/op 87568340 B/op 75293 allocs/op 80585404 ns/op 87568568 B/op 75293 allocs/op 0.96
BenchmarkDocument/tree_delete_all_1000 - ns/op 77080637 ns/op 80585404 ns/op 0.96
BenchmarkDocument/tree_delete_all_1000 - B/op 87568340 B/op 87568568 B/op 1.00
BenchmarkDocument/tree_delete_all_1000 - allocs/op 75293 allocs/op 75293 allocs/op 1
BenchmarkDocument/tree_edit_gc_100 3885051 ns/op 4147870 B/op 15146 allocs/op 3972947 ns/op 4147778 B/op 15146 allocs/op 0.98
BenchmarkDocument/tree_edit_gc_100 - ns/op 3885051 ns/op 3972947 ns/op 0.98
BenchmarkDocument/tree_edit_gc_100 - B/op 4147870 B/op 4147778 B/op 1.00
BenchmarkDocument/tree_edit_gc_100 - allocs/op 15146 allocs/op 15146 allocs/op 1
BenchmarkDocument/tree_edit_gc_1000 317849245 ns/op 384038702 B/op 154925 allocs/op 331904057 ns/op 384045086 B/op 154953 allocs/op 0.96
BenchmarkDocument/tree_edit_gc_1000 - ns/op 317849245 ns/op 331904057 ns/op 0.96
BenchmarkDocument/tree_edit_gc_1000 - B/op 384038702 B/op 384045086 B/op 1.00
BenchmarkDocument/tree_edit_gc_1000 - allocs/op 154925 allocs/op 154953 allocs/op 1.00
BenchmarkDocument/tree_split_gc_100 2613530 ns/op 2407268 B/op 11131 allocs/op 2761053 ns/op 2407209 B/op 11131 allocs/op 0.95
BenchmarkDocument/tree_split_gc_100 - ns/op 2613530 ns/op 2761053 ns/op 0.95
BenchmarkDocument/tree_split_gc_100 - B/op 2407268 B/op 2407209 B/op 1.00
BenchmarkDocument/tree_split_gc_100 - allocs/op 11131 allocs/op 11131 allocs/op 1
BenchmarkDocument/tree_split_gc_1000 192904636 ns/op 222497770 B/op 122065 allocs/op 203133011 ns/op 222500027 B/op 122069 allocs/op 0.95
BenchmarkDocument/tree_split_gc_1000 - ns/op 192904636 ns/op 203133011 ns/op 0.95
BenchmarkDocument/tree_split_gc_1000 - B/op 222497770 B/op 222500027 B/op 1.00
BenchmarkDocument/tree_split_gc_1000 - allocs/op 122065 allocs/op 122069 allocs/op 1.00
BenchmarkRPC/client_to_server 417510755 ns/op 16141552 B/op 223576 allocs/op 424329839 ns/op 17588093 B/op 223668 allocs/op 0.98
BenchmarkRPC/client_to_server - ns/op 417510755 ns/op 424329839 ns/op 0.98
BenchmarkRPC/client_to_server - B/op 16141552 B/op 17588093 B/op 0.92
BenchmarkRPC/client_to_server - allocs/op 223576 allocs/op 223668 allocs/op 1.00
BenchmarkRPC/client_to_client_via_server 781426194 ns/op 34827604 B/op 477035 allocs/op 800401766 ns/op 38735904 B/op 481548 allocs/op 0.98
BenchmarkRPC/client_to_client_via_server - ns/op 781426194 ns/op 800401766 ns/op 0.98
BenchmarkRPC/client_to_client_via_server - B/op 34827604 B/op 38735904 B/op 0.90
BenchmarkRPC/client_to_client_via_server - allocs/op 477035 allocs/op 481548 allocs/op 0.99
BenchmarkRPC/attach_large_document 1283776184 ns/op 1894075648 B/op 12452 allocs/op 1180007817 ns/op 1897647776 B/op 12256 allocs/op 1.09
BenchmarkRPC/attach_large_document - ns/op 1283776184 ns/op 1180007817 ns/op 1.09
BenchmarkRPC/attach_large_document - B/op 1894075648 B/op 1897647776 B/op 1.00
BenchmarkRPC/attach_large_document - allocs/op 12452 allocs/op 12256 allocs/op 1.02
BenchmarkRPC/adminCli_to_server 540702907 ns/op 22026520 B/op 292002 allocs/op 538418497 ns/op 21207404 B/op 291990 allocs/op 1.00
BenchmarkRPC/adminCli_to_server - ns/op 540702907 ns/op 538418497 ns/op 1.00
BenchmarkRPC/adminCli_to_server - B/op 22026520 B/op 21207404 B/op 1.04
BenchmarkRPC/adminCli_to_server - allocs/op 292002 allocs/op 291990 allocs/op 1.00
BenchmarkLocker 81.39 ns/op 32 B/op 1 allocs/op 81.02 ns/op 32 B/op 1 allocs/op 1.00
BenchmarkLocker - ns/op 81.39 ns/op 81.02 ns/op 1.00
BenchmarkLocker - B/op 32 B/op 32 B/op 1
BenchmarkLocker - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkLockerParallel 45.54 ns/op 0 B/op 0 allocs/op 45.83 ns/op 0 B/op 0 allocs/op 0.99
BenchmarkLockerParallel - ns/op 45.54 ns/op 45.83 ns/op 0.99
BenchmarkLockerParallel - B/op 0 B/op 0 B/op 1
BenchmarkLockerParallel - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkLockerMoreKeys 181.3 ns/op 31 B/op 0 allocs/op 176.5 ns/op 31 B/op 0 allocs/op 1.03
BenchmarkLockerMoreKeys - ns/op 181.3 ns/op 176.5 ns/op 1.03
BenchmarkLockerMoreKeys - B/op 31 B/op 31 B/op 1
BenchmarkLockerMoreKeys - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkRWLocker/RWLock_rate_2 50.63 ns/op 0 B/op 0 allocs/op 50.38 ns/op 0 B/op 0 allocs/op 1.00
BenchmarkRWLocker/RWLock_rate_2 - ns/op 50.63 ns/op 50.38 ns/op 1.00
BenchmarkRWLocker/RWLock_rate_2 - B/op 0 B/op 0 B/op 1
BenchmarkRWLocker/RWLock_rate_2 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkRWLocker/RWLock_rate_10 51.79 ns/op 0 B/op 0 allocs/op 44.44 ns/op 0 B/op 0 allocs/op 1.17
BenchmarkRWLocker/RWLock_rate_10 - ns/op 51.79 ns/op 44.44 ns/op 1.17
BenchmarkRWLocker/RWLock_rate_10 - B/op 0 B/op 0 B/op 1
BenchmarkRWLocker/RWLock_rate_10 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkRWLocker/RWLock_rate_100 61.11 ns/op 2 B/op 0 allocs/op 60.37 ns/op 2 B/op 0 allocs/op 1.01
BenchmarkRWLocker/RWLock_rate_100 - ns/op 61.11 ns/op 60.37 ns/op 1.01
BenchmarkRWLocker/RWLock_rate_100 - B/op 2 B/op 2 B/op 1
BenchmarkRWLocker/RWLock_rate_100 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkRWLocker/RWLock_rate_1000 90.17 ns/op 8 B/op 0 allocs/op 89.75 ns/op 8 B/op 0 allocs/op 1.00
BenchmarkRWLocker/RWLock_rate_1000 - ns/op 90.17 ns/op 89.75 ns/op 1.00
BenchmarkRWLocker/RWLock_rate_1000 - B/op 8 B/op 8 B/op 1
BenchmarkRWLocker/RWLock_rate_1000 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkChange/Push_10_Changes 4513953 ns/op 150238 B/op 1624 allocs/op 4558452 ns/op 150083 B/op 1622 allocs/op 0.99
BenchmarkChange/Push_10_Changes - ns/op 4513953 ns/op 4558452 ns/op 0.99
BenchmarkChange/Push_10_Changes - B/op 150238 B/op 150083 B/op 1.00
BenchmarkChange/Push_10_Changes - allocs/op 1624 allocs/op 1622 allocs/op 1.00
BenchmarkChange/Push_100_Changes 16520394 ns/op 782156 B/op 8511 allocs/op 16495920 ns/op 770910 B/op 8511 allocs/op 1.00
BenchmarkChange/Push_100_Changes - ns/op 16520394 ns/op 16495920 ns/op 1.00
BenchmarkChange/Push_100_Changes - B/op 782156 B/op 770910 B/op 1.01
BenchmarkChange/Push_100_Changes - allocs/op 8511 allocs/op 8511 allocs/op 1
BenchmarkChange/Push_1000_Changes 133009926 ns/op 7151078 B/op 79321 allocs/op 132621172 ns/op 7150779 B/op 79323 allocs/op 1.00
BenchmarkChange/Push_1000_Changes - ns/op 133009926 ns/op 132621172 ns/op 1.00
BenchmarkChange/Push_1000_Changes - B/op 7151078 B/op 7150779 B/op 1.00
BenchmarkChange/Push_1000_Changes - allocs/op 79321 allocs/op 79323 allocs/op 1.00
BenchmarkChange/Pull_10_Changes 3677562 ns/op 124635 B/op 1456 allocs/op 3700660 ns/op 124664 B/op 1456 allocs/op 0.99
BenchmarkChange/Pull_10_Changes - ns/op 3677562 ns/op 3700660 ns/op 0.99
BenchmarkChange/Pull_10_Changes - B/op 124635 B/op 124664 B/op 1.00
BenchmarkChange/Pull_10_Changes - allocs/op 1456 allocs/op 1456 allocs/op 1
BenchmarkChange/Pull_100_Changes 5281288 ns/op 354420 B/op 5181 allocs/op 5320008 ns/op 354527 B/op 5182 allocs/op 0.99
BenchmarkChange/Pull_100_Changes - ns/op 5281288 ns/op 5320008 ns/op 0.99
BenchmarkChange/Pull_100_Changes - B/op 354420 B/op 354527 B/op 1.00
BenchmarkChange/Pull_100_Changes - allocs/op 5181 allocs/op 5182 allocs/op 1.00
BenchmarkChange/Pull_1000_Changes 10727782 ns/op 2196190 B/op 44680 allocs/op 10868811 ns/op 2198479 B/op 44681 allocs/op 0.99
BenchmarkChange/Pull_1000_Changes - ns/op 10727782 ns/op 10868811 ns/op 0.99
BenchmarkChange/Pull_1000_Changes - B/op 2196190 B/op 2198479 B/op 1.00
BenchmarkChange/Pull_1000_Changes - allocs/op 44680 allocs/op 44681 allocs/op 1.00
BenchmarkSnapshot/Push_3KB_snapshot 18817538 ns/op 902455 B/op 8512 allocs/op 19271920 ns/op 892540 B/op 8512 allocs/op 0.98
BenchmarkSnapshot/Push_3KB_snapshot - ns/op 18817538 ns/op 19271920 ns/op 0.98
BenchmarkSnapshot/Push_3KB_snapshot - B/op 902455 B/op 892540 B/op 1.01
BenchmarkSnapshot/Push_3KB_snapshot - allocs/op 8512 allocs/op 8512 allocs/op 1
BenchmarkSnapshot/Push_30KB_snapshot 137520700 ns/op 8301406 B/op 89948 allocs/op 136384683 ns/op 8281871 B/op 91044 allocs/op 1.01
BenchmarkSnapshot/Push_30KB_snapshot - ns/op 137520700 ns/op 136384683 ns/op 1.01
BenchmarkSnapshot/Push_30KB_snapshot - B/op 8301406 B/op 8281871 B/op 1.00
BenchmarkSnapshot/Push_30KB_snapshot - allocs/op 89948 allocs/op 91044 allocs/op 0.99
BenchmarkSnapshot/Pull_3KB_snapshot 7443319 ns/op 1115772 B/op 20062 allocs/op 7497599 ns/op 1115509 B/op 20062 allocs/op 0.99
BenchmarkSnapshot/Pull_3KB_snapshot - ns/op 7443319 ns/op 7497599 ns/op 0.99
BenchmarkSnapshot/Pull_3KB_snapshot - B/op 1115772 B/op 1115509 B/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - allocs/op 20062 allocs/op 20062 allocs/op 1
BenchmarkSnapshot/Pull_30KB_snapshot 19408023 ns/op 9305622 B/op 193609 allocs/op 20179037 ns/op 9309422 B/op 193605 allocs/op 0.96
BenchmarkSnapshot/Pull_30KB_snapshot - ns/op 19408023 ns/op 20179037 ns/op 0.96
BenchmarkSnapshot/Pull_30KB_snapshot - B/op 9305622 B/op 9309422 B/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - allocs/op 193609 allocs/op 193605 allocs/op 1.00
BenchmarkSplayTree/stress_test_100000 0.1913 ns/op 0 B/op 0 allocs/op 0.19 ns/op 0 B/op 0 allocs/op 1.01
BenchmarkSplayTree/stress_test_100000 - ns/op 0.1913 ns/op 0.19 ns/op 1.01
BenchmarkSplayTree/stress_test_100000 - B/op 0 B/op 0 B/op 1
BenchmarkSplayTree/stress_test_100000 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkSplayTree/stress_test_200000 0.3753 ns/op 0 B/op 0 allocs/op 0.3918 ns/op 0 B/op 0 allocs/op 0.96
BenchmarkSplayTree/stress_test_200000 - ns/op 0.3753 ns/op 0.3918 ns/op 0.96
BenchmarkSplayTree/stress_test_200000 - B/op 0 B/op 0 B/op 1
BenchmarkSplayTree/stress_test_200000 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkSplayTree/stress_test_300000 0.5928 ns/op 0 B/op 0 allocs/op 0.6109 ns/op 0 B/op 0 allocs/op 0.97
BenchmarkSplayTree/stress_test_300000 - ns/op 0.5928 ns/op 0.6109 ns/op 0.97
BenchmarkSplayTree/stress_test_300000 - B/op 0 B/op 0 B/op 1
BenchmarkSplayTree/stress_test_300000 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkSplayTree/random_access_100000 0.01296 ns/op 0 B/op 0 allocs/op 0.01261 ns/op 0 B/op 0 allocs/op 1.03
BenchmarkSplayTree/random_access_100000 - ns/op 0.01296 ns/op 0.01261 ns/op 1.03
BenchmarkSplayTree/random_access_100000 - B/op 0 B/op 0 B/op 1
BenchmarkSplayTree/random_access_100000 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkSplayTree/random_access_200000 0.03273 ns/op 0 B/op 0 allocs/op 0.03222 ns/op 0 B/op 0 allocs/op 1.02
BenchmarkSplayTree/random_access_200000 - ns/op 0.03273 ns/op 0.03222 ns/op 1.02
BenchmarkSplayTree/random_access_200000 - B/op 0 B/op 0 B/op 1
BenchmarkSplayTree/random_access_200000 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkSplayTree/random_access_300000 0.0459 ns/op 0 B/op 0 allocs/op 0.04403 ns/op 0 B/op 0 allocs/op 1.04
BenchmarkSplayTree/random_access_300000 - ns/op 0.0459 ns/op 0.04403 ns/op 1.04
BenchmarkSplayTree/random_access_300000 - B/op 0 B/op 0 B/op 1
BenchmarkSplayTree/random_access_300000 - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkSplayTree/editing_trace_bench 0.001963 ns/op 0 B/op 0 allocs/op 0.001977 ns/op 0 B/op 0 allocs/op 0.99
BenchmarkSplayTree/editing_trace_bench - ns/op 0.001963 ns/op 0.001977 ns/op 0.99
BenchmarkSplayTree/editing_trace_bench - B/op 0 B/op 0 B/op 1
BenchmarkSplayTree/editing_trace_bench - allocs/op 0 allocs/op 0 allocs/op 1
BenchmarkSync/memory_sync_10_test 7169 ns/op 1342 B/op 35 allocs/op 7107 ns/op 1342 B/op 35 allocs/op 1.01
BenchmarkSync/memory_sync_10_test - ns/op 7169 ns/op 7107 ns/op 1.01
BenchmarkSync/memory_sync_10_test - B/op 1342 B/op 1342 B/op 1
BenchmarkSync/memory_sync_10_test - allocs/op 35 allocs/op 35 allocs/op 1
BenchmarkSync/memory_sync_100_test 55752 ns/op 9505 B/op 268 allocs/op 55697 ns/op 9541 B/op 269 allocs/op 1.00
BenchmarkSync/memory_sync_100_test - ns/op 55752 ns/op 55697 ns/op 1.00
BenchmarkSync/memory_sync_100_test - B/op 9505 B/op 9541 B/op 1.00
BenchmarkSync/memory_sync_100_test - allocs/op 268 allocs/op 269 allocs/op 1.00
BenchmarkSync/memory_sync_1000_test 623060 ns/op 75517 B/op 2098 allocs/op 615574 ns/op 76042 B/op 2115 allocs/op 1.01
BenchmarkSync/memory_sync_1000_test - ns/op 623060 ns/op 615574 ns/op 1.01
BenchmarkSync/memory_sync_1000_test - B/op 75517 B/op 76042 B/op 0.99
BenchmarkSync/memory_sync_1000_test - allocs/op 2098 allocs/op 2115 allocs/op 0.99
BenchmarkSync/memory_sync_10000_test 7746659 ns/op 750360 B/op 20388 allocs/op 8041046 ns/op 761602 B/op 20469 allocs/op 0.96
BenchmarkSync/memory_sync_10000_test - ns/op 7746659 ns/op 8041046 ns/op 0.96
BenchmarkSync/memory_sync_10000_test - B/op 750360 B/op 761602 B/op 0.99
BenchmarkSync/memory_sync_10000_test - allocs/op 20388 allocs/op 20469 allocs/op 1.00
BenchmarkTextEditing 5274782535 ns/op 3922664968 B/op 20619732 allocs/op 5253615977 ns/op 3922679240 B/op 20619772 allocs/op 1.00
BenchmarkTextEditing - ns/op 5274782535 ns/op 5253615977 ns/op 1.00
BenchmarkTextEditing - B/op 3922664968 B/op 3922679240 B/op 1.00
BenchmarkTextEditing - allocs/op 20619732 allocs/op 20619772 allocs/op 1.00
BenchmarkTree/10000_vertices_to_protobuf 4448623 ns/op 6363240 B/op 70025 allocs/op 4325676 ns/op 6363245 B/op 70025 allocs/op 1.03
BenchmarkTree/10000_vertices_to_protobuf - ns/op 4448623 ns/op 4325676 ns/op 1.03
BenchmarkTree/10000_vertices_to_protobuf - B/op 6363240 B/op 6363245 B/op 1.00
BenchmarkTree/10000_vertices_to_protobuf - allocs/op 70025 allocs/op 70025 allocs/op 1
BenchmarkTree/10000_vertices_from_protobuf 226048058 ns/op 442304296 B/op 290038 allocs/op 223326905 ns/op 442304321 B/op 290039 allocs/op 1.01
BenchmarkTree/10000_vertices_from_protobuf - ns/op 226048058 ns/op 223326905 ns/op 1.01
BenchmarkTree/10000_vertices_from_protobuf - B/op 442304296 B/op 442304321 B/op 1.00
BenchmarkTree/10000_vertices_from_protobuf - allocs/op 290038 allocs/op 290039 allocs/op 1.00
BenchmarkTree/20000_vertices_to_protobuf 9115707 ns/op 12890897 B/op 140028 allocs/op 9087112 ns/op 12891028 B/op 140028 allocs/op 1.00
BenchmarkTree/20000_vertices_to_protobuf - ns/op 9115707 ns/op 9087112 ns/op 1.00
BenchmarkTree/20000_vertices_to_protobuf - B/op 12890897 B/op 12891028 B/op 1.00
BenchmarkTree/20000_vertices_to_protobuf - allocs/op 140028 allocs/op 140028 allocs/op 1
BenchmarkTree/20000_vertices_from_protobuf 893980205 ns/op 1697478352 B/op 580045 allocs/op 874765082 ns/op 1697474176 B/op 580044 allocs/op 1.02
BenchmarkTree/20000_vertices_from_protobuf - ns/op 893980205 ns/op 874765082 ns/op 1.02
BenchmarkTree/20000_vertices_from_protobuf - B/op 1697478352 B/op 1697474176 B/op 1.00
BenchmarkTree/20000_vertices_from_protobuf - allocs/op 580045 allocs/op 580044 allocs/op 1.00
BenchmarkTree/30000_vertices_to_protobuf 13986520 ns/op 18976271 B/op 210029 allocs/op 14164975 ns/op 18976187 B/op 210029 allocs/op 0.99
BenchmarkTree/30000_vertices_to_protobuf - ns/op 13986520 ns/op 14164975 ns/op 0.99
BenchmarkTree/30000_vertices_to_protobuf - B/op 18976271 B/op 18976187 B/op 1.00
BenchmarkTree/30000_vertices_to_protobuf - allocs/op 210029 allocs/op 210029 allocs/op 1
BenchmarkTree/30000_vertices_from_protobuf 2016765294 ns/op 3751734408 B/op 870048 allocs/op 1984250990 ns/op 3751752256 B/op 870143 allocs/op 1.02
BenchmarkTree/30000_vertices_from_protobuf - ns/op 2016765294 ns/op 1984250990 ns/op 1.02
BenchmarkTree/30000_vertices_from_protobuf - B/op 3751734408 B/op 3751752256 B/op 1.00
BenchmarkTree/30000_vertices_from_protobuf - allocs/op 870048 allocs/op 870143 allocs/op 1.00
BenchmarkVersionVector/clients_10 160103061 ns/op 745.0 1_changepack(bytes) 379.0 2_snapshot(bytes) 8.000 3_pushpull(ms) 6.000 4_attach(ms) 805.0 5_changepack_after_detach(bytes) 136.0 6_snapshot_after_detach(bytes) 8.000 7_pushpull_after_detach(ms) 20986836 B/op 83799 allocs/op 160646014 ns/op 745.0 1_changepack(bytes) 379.0 2_snapshot(bytes) 8.000 3_pushpull(ms) 6.000 4_attach(ms) 805.0 5_changepack_after_detach(bytes) 136.0 6_snapshot_after_detach(bytes) 8.000 7_pushpull_after_detach(ms) 20287940 B/op 83784 allocs/op 1.00
BenchmarkVersionVector/clients_10 - ns/op 160103061 ns/op 160646014 ns/op 1.00
BenchmarkVersionVector/clients_10 - 1_changepack(bytes) 745 1_changepack(bytes) 745 1_changepack(bytes) 1
BenchmarkVersionVector/clients_10 - 2_snapshot(bytes) 379 2_snapshot(bytes) 379 2_snapshot(bytes) 1
BenchmarkVersionVector/clients_10 - 3_pushpull(ms) 8 3_pushpull(ms) 8 3_pushpull(ms) 1
BenchmarkVersionVector/clients_10 - 4_attach(ms) 6 4_attach(ms) 6 4_attach(ms) 1
BenchmarkVersionVector/clients_10 - 5_changepack_after_detach(bytes) 805 5_changepack_after_detach(bytes) 805 5_changepack_after_detach(bytes) 1
BenchmarkVersionVector/clients_10 - 6_snapshot_after_detach(bytes) 136 6_snapshot_after_detach(bytes) 136 6_snapshot_after_detach(bytes) 1
BenchmarkVersionVector/clients_10 - 7_pushpull_after_detach(ms) 8 7_pushpull_after_detach(ms) 8 7_pushpull_after_detach(ms) 1
BenchmarkVersionVector/clients_10 - B/op 20986836 B/op 20287940 B/op 1.03
BenchmarkVersionVector/clients_10 - allocs/op 83799 allocs/op 83784 allocs/op 1.00
BenchmarkVersionVector/clients_100 1474358023 ns/op 6145 1_changepack(bytes) 3079 2_snapshot(bytes) 10.00 3_pushpull(ms) 11.00 4_attach(ms) 6210 5_changepack_after_detach(bytes) 137.0 6_snapshot_after_detach(bytes) 10.00 7_pushpull_after_detach(ms) 232823008 B/op 1540527 allocs/op 1433072198 ns/op 6145 1_changepack(bytes) 3079 2_snapshot(bytes) 11.00 3_pushpull(ms) 11.00 4_attach(ms) 6210 5_changepack_after_detach(bytes) 137.0 6_snapshot_after_detach(bytes) 9.000 7_pushpull_after_detach(ms) 229513232 B/op 1539779 allocs/op 1.03
BenchmarkVersionVector/clients_100 - ns/op 1474358023 ns/op 1433072198 ns/op 1.03
BenchmarkVersionVector/clients_100 - 1_changepack(bytes) 6145 1_changepack(bytes) 6145 1_changepack(bytes) 1
BenchmarkVersionVector/clients_100 - 2_snapshot(bytes) 3079 2_snapshot(bytes) 3079 2_snapshot(bytes) 1
BenchmarkVersionVector/clients_100 - 3_pushpull(ms) 10 3_pushpull(ms) 11 3_pushpull(ms) 0.91
BenchmarkVersionVector/clients_100 - 4_attach(ms) 11 4_attach(ms) 11 4_attach(ms) 1
BenchmarkVersionVector/clients_100 - 5_changepack_after_detach(bytes) 6210 5_changepack_after_detach(bytes) 6210 5_changepack_after_detach(bytes) 1
BenchmarkVersionVector/clients_100 - 6_snapshot_after_detach(bytes) 137 6_snapshot_after_detach(bytes) 137 6_snapshot_after_detach(bytes) 1
BenchmarkVersionVector/clients_100 - 7_pushpull_after_detach(ms) 10 7_pushpull_after_detach(ms) 9 7_pushpull_after_detach(ms) 1.11
BenchmarkVersionVector/clients_100 - B/op 232823008 B/op 229513232 B/op 1.01
BenchmarkVersionVector/clients_100 - allocs/op 1540527 allocs/op 1539779 allocs/op 1.00
BenchmarkVersionVector/clients_1000 60993317930 ns/op 60155 1_changepack(bytes) 30081 2_snapshot(bytes) 94.00 3_pushpull(ms) 218.0 4_attach(ms) 60217 5_changepack_after_detach(bytes) 139.0 6_snapshot_after_detach(bytes) 22.00 7_pushpull_after_detach(ms) 22062757192 B/op 111769090 allocs/op 60712115599 ns/op 60155 1_changepack(bytes) 30081 2_snapshot(bytes) 93.00 3_pushpull(ms) 248.0 4_attach(ms) 60217 5_changepack_after_detach(bytes) 139.0 6_snapshot_after_detach(bytes) 23.00 7_pushpull_after_detach(ms) 22060089032 B/op 111763287 allocs/op 1.00
BenchmarkVersionVector/clients_1000 - ns/op 60993317930 ns/op 60712115599 ns/op 1.00
BenchmarkVersionVector/clients_1000 - 1_changepack(bytes) 60155 1_changepack(bytes) 60155 1_changepack(bytes) 1
BenchmarkVersionVector/clients_1000 - 2_snapshot(bytes) 30081 2_snapshot(bytes) 30081 2_snapshot(bytes) 1
BenchmarkVersionVector/clients_1000 - 3_pushpull(ms) 94 3_pushpull(ms) 93 3_pushpull(ms) 1.01
BenchmarkVersionVector/clients_1000 - 4_attach(ms) 218 4_attach(ms) 248 4_attach(ms) 0.88
BenchmarkVersionVector/clients_1000 - 5_changepack_after_detach(bytes) 60217 5_changepack_after_detach(bytes) 60217 5_changepack_after_detach(bytes) 1
BenchmarkVersionVector/clients_1000 - 6_snapshot_after_detach(bytes) 139 6_snapshot_after_detach(bytes) 139 6_snapshot_after_detach(bytes) 1
BenchmarkVersionVector/clients_1000 - 7_pushpull_after_detach(ms) 22 7_pushpull_after_detach(ms) 23 7_pushpull_after_detach(ms) 0.96
BenchmarkVersionVector/clients_1000 - B/op 22062757192 B/op 22060089032 B/op 1.00
BenchmarkVersionVector/clients_1000 - allocs/op 111769090 allocs/op 111763287 allocs/op 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Copy link

codecov bot commented Feb 16, 2025

Codecov Report

Attention: Patch coverage is 55.55556% with 16 lines in your changes missing coverage. Please review.

Project coverage is 38.61%. Comparing base (2fa676d) to head (3d12610).
Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
server/backend/database/memory/database.go 0.00% 6 Missing ⚠️
test/helper/helper.go 0.00% 6 Missing ⚠️
server/backend/database/mongo/client.go 0.00% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1153      +/-   ##
==========================================
+ Coverage   38.46%   38.61%   +0.14%     
==========================================
  Files         169      170       +1     
  Lines       25433    25444      +11     
==========================================
+ Hits         9783     9825      +42     
+ Misses      14829    14798      -31     
  Partials      821      821              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@hackerwins hackerwins self-requested a review February 17, 2025 00:16
Copy link
Member

@hackerwins hackerwins left a comment

Choose a reason for hiding this comment

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

Thanks for your contribution.

@hackerwins hackerwins changed the title Improve Min Version Vector Computation Optimize Minimum VersionVector Computation for Performance Feb 17, 2025
@hackerwins hackerwins merged commit f1c5710 into main Feb 17, 2025
5 checks passed
@hackerwins hackerwins deleted the enhance-minvv branch February 17, 2025 00:18
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Performance Optimization for minVV and maxVV calculation
2 participants