Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/yorkie-team/yorkie into set…
Browse files Browse the repository at this point in the history
…-nested-object
  • Loading branch information
highcloud100 committed Jan 10, 2024
2 parents 68599a2 + 145d4f8 commit a30fb8a
Show file tree
Hide file tree
Showing 9 changed files with 360 additions and 268 deletions.
16 changes: 11 additions & 5 deletions server/backend/database/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,13 +134,19 @@ type Database interface {
// after handling PushPull.
UpdateClientInfoAfterPushPull(ctx context.Context, clientInfo *ClientInfo, docInfo *DocInfo) error

// FindDeactivateCandidates finds the housekeeping candidates.
FindDeactivateCandidates(
// FindNextNCyclingProjectInfos finds the next N cycling projects from the given projectID.
FindNextNCyclingProjectInfos(
ctx context.Context,
candidatesLimitPerProject int,
projectFetchSize int,
pageSize int,
lastProjectID types.ID,
) (types.ID, []*ClientInfo, error)
) ([]*ProjectInfo, error)

// FindDeactivateCandidatesPerProject finds the clients that need housekeeping per project.
FindDeactivateCandidatesPerProject(
ctx context.Context,
project *ProjectInfo,
candidatesLimit int,
) ([]*ClientInfo, error)

// FindDocInfoByKey finds the document of the given key.
FindDocInfoByKey(
Expand Down
71 changes: 31 additions & 40 deletions server/backend/database/memory/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,38 +224,58 @@ func (d *DB) CreateProjectInfo(
return info, nil
}

// listProjectInfos returns all project infos rotationally.
func (d *DB) listProjectInfos(
// FindNextNCyclingProjectInfos finds the next N cycling projects from the given projectID.
func (d *DB) FindNextNCyclingProjectInfos(
_ context.Context,
pageSize int,
housekeepingLastProjectID types.ID,
lastProjectID types.ID,
) ([]*database.ProjectInfo, error) {
txn := d.db.Txn(false)
defer txn.Abort()

iter, err := txn.LowerBound(
tblProjects,
"id",
housekeepingLastProjectID.String(),
lastProjectID.String(),
)
if err != nil {
return nil, fmt.Errorf("fetch projects: %w", err)
}

var infos []*database.ProjectInfo
isCircular := false

for i := 0; i < pageSize; i++ {
raw := iter.Next()
if raw == nil {
break
if isCircular {
break
}

iter, err = txn.LowerBound(
tblProjects,
"id",
database.DefaultProjectID.String(),
)
if err != nil {
return nil, fmt.Errorf("fetch projects: %w", err)
}

i--
isCircular = true
continue
}
info := raw.(*database.ProjectInfo).DeepCopy()

if i == 0 && info.ID == housekeepingLastProjectID {
if i == 0 && info.ID == lastProjectID {
pageSize++
continue
}

if len(infos) > 0 && infos[0].ID == info.ID {
break
}

infos = append(infos, info)
}

Expand Down Expand Up @@ -563,8 +583,8 @@ func (d *DB) UpdateClientInfoAfterPushPull(
return nil
}

// findDeactivateCandidatesPerProject finds the clients that need housekeeping per project.
func (d *DB) findDeactivateCandidatesPerProject(
// FindDeactivateCandidatesPerProject finds the clients that need housekeeping per project.
func (d *DB) FindDeactivateCandidatesPerProject(
_ context.Context,
project *database.ProjectInfo,
candidatesLimit int,
Expand Down Expand Up @@ -599,41 +619,12 @@ func (d *DB) findDeactivateCandidatesPerProject(
info.UpdatedAt.After(offset) {
break
}
infos = append(infos, info)
}
return infos, nil
}

// FindDeactivateCandidates finds the clients that need housekeeping.
func (d *DB) FindDeactivateCandidates(
ctx context.Context,
candidatesLimitPerProject int,
projectFetchSize int,
lastProjectID types.ID,
) (types.ID, []*database.ClientInfo, error) {
projects, err := d.listProjectInfos(ctx, projectFetchSize, lastProjectID)
if err != nil {
return database.DefaultProjectID, nil, err
}

var candidates []*database.ClientInfo
for _, project := range projects {
infos, err := d.findDeactivateCandidatesPerProject(ctx, project, candidatesLimitPerProject)
if err != nil {
return database.DefaultProjectID, nil, err
if info.ProjectID == project.ID {
infos = append(infos, info)
}

candidates = append(candidates, infos...)
}

var topProjectID types.ID
if len(projects) < projectFetchSize {
topProjectID = database.DefaultProjectID
} else {
topProjectID = projects[len(projects)-1].ID
}

return topProjectID, candidates, nil
return infos, nil
}

// FindDocInfoByKeyAndOwner finds the document of the given key. If the
Expand Down
8 changes: 8 additions & 0 deletions server/backend/database/memory/database_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@ func TestDB(t *testing.T) {
db, err := memory.New()
assert.NoError(t, err)

t.Run("FindNextNCyclingProjectInfos test", func(t *testing.T) {
testcases.RunFindNextNCyclingProjectInfosTest(t, db)
})

t.Run("FindDeactivateCandidatesPerProject test", func(t *testing.T) {
testcases.RunFindDeactivateCandidatesPerProjectTest(t, db)
})

t.Run("RunFindDocInfo test", func(t *testing.T) {
testcases.RunFindDocInfoTest(t, db, projectID)
})
Expand Down
133 changes: 0 additions & 133 deletions server/backend/database/memory/housekeeping_test.go

This file was deleted.

62 changes: 25 additions & 37 deletions server/backend/database/mongo/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,13 +240,13 @@ func (c *Client) CreateProjectInfo(
return info, nil
}

// listProjectInfos returns all project infos rotationally.
func (c *Client) listProjectInfos(
// FindNextNCyclingProjectInfos finds the next N cycling projects from the given projectID.
func (c *Client) FindNextNCyclingProjectInfos(
ctx context.Context,
pageSize int,
housekeepingLastProjectID types.ID,
lastProjectID types.ID,
) ([]*database.ProjectInfo, error) {
encodedID, err := encodeID(housekeepingLastProjectID)
encodedID, err := encodeID(lastProjectID)
if err != nil {
return nil, err
}
Expand All @@ -268,6 +268,25 @@ func (c *Client) listProjectInfos(
return nil, fmt.Errorf("fetch project infos: %w", err)
}

if len(infos) < pageSize {
opts.SetLimit(int64(pageSize - len(infos)))

cursor, err := c.collection(colProjects).Find(ctx, bson.M{
"_id": bson.M{
"$lte": encodedID,
},
}, opts)
if err != nil {
return nil, fmt.Errorf("find project infos: %w", err)
}

var newInfos []*database.ProjectInfo
if err := cursor.All(ctx, &newInfos); err != nil {
return nil, fmt.Errorf("fetch project infos: %w", err)
}
infos = append(infos, newInfos...)
}

return infos, nil
}

Expand Down Expand Up @@ -633,8 +652,8 @@ func (c *Client) UpdateClientInfoAfterPushPull(
return nil
}

// findDeactivateCandidatesPerProject finds the clients that need housekeeping per project.
func (c *Client) findDeactivateCandidatesPerProject(
// FindDeactivateCandidatesPerProject finds the clients that need housekeeping per project.
func (c *Client) FindDeactivateCandidatesPerProject(
ctx context.Context,
project *database.ProjectInfo,
candidatesLimit int,
Expand Down Expand Up @@ -669,37 +688,6 @@ func (c *Client) findDeactivateCandidatesPerProject(
return clientInfos, nil
}

// FindDeactivateCandidates finds the clients that need housekeeping.
func (c *Client) FindDeactivateCandidates(
ctx context.Context,
candidatesLimitPerProject int,
projectFetchSize int,
lastProjectID types.ID,
) (types.ID, []*database.ClientInfo, error) {
projects, err := c.listProjectInfos(ctx, projectFetchSize, lastProjectID)
if err != nil {
return database.DefaultProjectID, nil, err
}

var candidates []*database.ClientInfo
for _, project := range projects {
clientInfos, err := c.findDeactivateCandidatesPerProject(ctx, project, candidatesLimitPerProject)
if err != nil {
return database.DefaultProjectID, nil, err
}

candidates = append(candidates, clientInfos...)
}

var topProjectID types.ID
if len(projects) < projectFetchSize {
topProjectID = database.DefaultProjectID
} else {
topProjectID = projects[len(projects)-1].ID
}
return topProjectID, candidates, nil
}

// FindDocInfoByKeyAndOwner finds the document of the given key. If the
// createDocIfNotExist condition is true, create the document if it does not
// exist.
Expand Down
Loading

1 comment on commit a30fb8a

@github-actions
Copy link

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: a30fb8a Previous: a8c58f9 Ratio
BenchmarkDocument/constructor_test - ns/op 1438 ns/op 1457 ns/op 0.99
BenchmarkDocument/constructor_test - B/op 1224 B/op 1224 B/op 1
BenchmarkDocument/constructor_test - allocs/op 21 allocs/op 21 allocs/op 1
BenchmarkDocument/status_test - ns/op 1018 ns/op 849.5 ns/op 1.20
BenchmarkDocument/status_test - B/op 1192 B/op 1192 B/op 1
BenchmarkDocument/status_test - allocs/op 19 allocs/op 19 allocs/op 1
BenchmarkDocument/equals_test - ns/op 7351 ns/op 7524 ns/op 0.98
BenchmarkDocument/equals_test - B/op 6977 B/op 6977 B/op 1
BenchmarkDocument/equals_test - allocs/op 124 allocs/op 124 allocs/op 1
BenchmarkDocument/nested_update_test - ns/op 16628 ns/op 18601 ns/op 0.89
BenchmarkDocument/nested_update_test - B/op 12058 B/op 12059 B/op 1.00
BenchmarkDocument/nested_update_test - allocs/op 260 allocs/op 260 allocs/op 1
BenchmarkDocument/delete_test - ns/op 22461 ns/op 22335 ns/op 1.01
BenchmarkDocument/delete_test - B/op 15284 B/op 15284 B/op 1
BenchmarkDocument/delete_test - allocs/op 339 allocs/op 339 allocs/op 1
BenchmarkDocument/object_test - ns/op 8528 ns/op 8516 ns/op 1.00
BenchmarkDocument/object_test - B/op 6753 B/op 6753 B/op 1
BenchmarkDocument/object_test - allocs/op 118 allocs/op 118 allocs/op 1
BenchmarkDocument/array_test - ns/op 28970 ns/op 28781 ns/op 1.01
BenchmarkDocument/array_test - B/op 11883 B/op 11883 B/op 1
BenchmarkDocument/array_test - allocs/op 274 allocs/op 274 allocs/op 1
BenchmarkDocument/text_test - ns/op 30427 ns/op 30487 ns/op 1.00
BenchmarkDocument/text_test - B/op 14916 B/op 14828 B/op 1.01
BenchmarkDocument/text_test - allocs/op 470 allocs/op 470 allocs/op 1
BenchmarkDocument/text_composition_test - ns/op 28853 ns/op 28865 ns/op 1.00
BenchmarkDocument/text_composition_test - B/op 18428 B/op 18310 B/op 1.01
BenchmarkDocument/text_composition_test - allocs/op 479 allocs/op 479 allocs/op 1
BenchmarkDocument/rich_text_test - ns/op 79425 ns/op 80677 ns/op 0.98
BenchmarkDocument/rich_text_test - B/op 38681 B/op 38572 B/op 1.00
BenchmarkDocument/rich_text_test - allocs/op 1149 allocs/op 1149 allocs/op 1
BenchmarkDocument/counter_test - ns/op 16779 ns/op 16759 ns/op 1.00
BenchmarkDocument/counter_test - B/op 10466 B/op 10242 B/op 1.02
BenchmarkDocument/counter_test - allocs/op 238 allocs/op 238 allocs/op 1
BenchmarkDocument/text_edit_gc_100 - ns/op 2883747 ns/op 2887897 ns/op 1.00
BenchmarkDocument/text_edit_gc_100 - B/op 1658531 B/op 1655169 B/op 1.00
BenchmarkDocument/text_edit_gc_100 - allocs/op 17094 allocs/op 17094 allocs/op 1
BenchmarkDocument/text_edit_gc_1000 - ns/op 228538854 ns/op 229415441 ns/op 1.00
BenchmarkDocument/text_edit_gc_1000 - B/op 144381744 B/op 144344868 B/op 1.00
BenchmarkDocument/text_edit_gc_1000 - allocs/op 200951 allocs/op 200908 allocs/op 1.00
BenchmarkDocument/text_split_gc_100 - ns/op 3371551 ns/op 3374708 ns/op 1.00
BenchmarkDocument/text_split_gc_100 - B/op 2316522 B/op 2313351 B/op 1.00
BenchmarkDocument/text_split_gc_100 - allocs/op 16194 allocs/op 16195 allocs/op 1.00
BenchmarkDocument/text_split_gc_1000 - ns/op 288281162 ns/op 287430465 ns/op 1.00
BenchmarkDocument/text_split_gc_1000 - B/op 228917728 B/op 228891160 B/op 1.00
BenchmarkDocument/text_split_gc_1000 - allocs/op 203917 allocs/op 203934 allocs/op 1.00
BenchmarkDocument/text_delete_all_10000 - ns/op 10955849 ns/op 10779697 ns/op 1.02
BenchmarkDocument/text_delete_all_10000 - B/op 5810256 B/op 5809238 B/op 1.00
BenchmarkDocument/text_delete_all_10000 - allocs/op 40673 allocs/op 40669 allocs/op 1.00
BenchmarkDocument/text_delete_all_100000 - ns/op 178654264 ns/op 188925896 ns/op 0.95
BenchmarkDocument/text_delete_all_100000 - B/op 81898936 B/op 81910706 B/op 1.00
BenchmarkDocument/text_delete_all_100000 - allocs/op 411618 allocs/op 411662 allocs/op 1.00
BenchmarkDocument/text_100 - ns/op 219819 ns/op 229354 ns/op 0.96
BenchmarkDocument/text_100 - B/op 120139 B/op 118514 B/op 1.01
BenchmarkDocument/text_100 - allocs/op 5082 allocs/op 5082 allocs/op 1
BenchmarkDocument/text_1000 - ns/op 2379984 ns/op 2502759 ns/op 0.95
BenchmarkDocument/text_1000 - B/op 1169126 B/op 1153102 B/op 1.01
BenchmarkDocument/text_1000 - allocs/op 50086 allocs/op 50086 allocs/op 1
BenchmarkDocument/array_1000 - ns/op 1210549 ns/op 1262770 ns/op 0.96
BenchmarkDocument/array_1000 - B/op 1091379 B/op 1091147 B/op 1.00
BenchmarkDocument/array_1000 - allocs/op 11830 allocs/op 11829 allocs/op 1.00
BenchmarkDocument/array_10000 - ns/op 13342281 ns/op 13221008 ns/op 1.01
BenchmarkDocument/array_10000 - B/op 9800372 B/op 9799195 B/op 1.00
BenchmarkDocument/array_10000 - allocs/op 120296 allocs/op 120291 allocs/op 1.00
BenchmarkDocument/array_gc_100 - ns/op 146397 ns/op 172372 ns/op 0.85
BenchmarkDocument/array_gc_100 - B/op 132659 B/op 139899 B/op 0.95
BenchmarkDocument/array_gc_100 - allocs/op 1258 allocs/op 1472 allocs/op 0.85
BenchmarkDocument/array_gc_1000 - ns/op 1396712 ns/op 1651513 ns/op 0.85
BenchmarkDocument/array_gc_1000 - B/op 1159061 B/op 1241466 B/op 0.93
BenchmarkDocument/array_gc_1000 - allocs/op 12874 allocs/op 14897 allocs/op 0.86
BenchmarkDocument/counter_1000 - ns/op 195955 ns/op 210894 ns/op 0.93
BenchmarkDocument/counter_1000 - B/op 192917 B/op 192884 B/op 1.00
BenchmarkDocument/counter_1000 - allocs/op 5767 allocs/op 5767 allocs/op 1
BenchmarkDocument/counter_10000 - ns/op 2143839 ns/op 2217464 ns/op 0.97
BenchmarkDocument/counter_10000 - B/op 2087847 B/op 2087814 B/op 1.00
BenchmarkDocument/counter_10000 - allocs/op 59774 allocs/op 59774 allocs/op 1
BenchmarkDocument/object_1000 - ns/op 1357525 ns/op 1442631 ns/op 0.94
BenchmarkDocument/object_1000 - B/op 1428162 B/op 1428083 B/op 1.00
BenchmarkDocument/object_1000 - allocs/op 9847 allocs/op 9847 allocs/op 1
BenchmarkDocument/object_10000 - ns/op 14953983 ns/op 15149865 ns/op 0.99
BenchmarkDocument/object_10000 - B/op 12165105 B/op 12166338 B/op 1.00
BenchmarkDocument/object_10000 - allocs/op 100557 allocs/op 100562 allocs/op 1.00
BenchmarkDocument/tree_100 - ns/op 1066150 ns/op 1068412 ns/op 1.00
BenchmarkDocument/tree_100 - B/op 943709 B/op 943709 B/op 1
BenchmarkDocument/tree_100 - allocs/op 6101 allocs/op 6101 allocs/op 1
BenchmarkDocument/tree_1000 - ns/op 76873133 ns/op 79029252 ns/op 0.97
BenchmarkDocument/tree_1000 - B/op 86460417 B/op 86460602 B/op 1.00
BenchmarkDocument/tree_1000 - allocs/op 60114 allocs/op 60116 allocs/op 1.00
BenchmarkDocument/tree_10000 - ns/op 9418298078 ns/op 9661149264 ns/op 0.97
BenchmarkDocument/tree_10000 - B/op 8580661320 B/op 8580973784 B/op 1.00
BenchmarkDocument/tree_10000 - allocs/op 600227 allocs/op 600230 allocs/op 1.00
BenchmarkDocument/tree_delete_all_1000 - ns/op 74440395 ns/op 79816852 ns/op 0.93
BenchmarkDocument/tree_delete_all_1000 - B/op 86990354 B/op 86990889 B/op 1.00
BenchmarkDocument/tree_delete_all_1000 - allocs/op 67751 allocs/op 67750 allocs/op 1.00
BenchmarkDocument/tree_edit_gc_100 - ns/op 3696230 ns/op 3866691 ns/op 0.96
BenchmarkDocument/tree_edit_gc_100 - B/op 4121056 B/op 4121023 B/op 1.00
BenchmarkDocument/tree_edit_gc_100 - allocs/op 14358 allocs/op 14358 allocs/op 1
BenchmarkDocument/tree_edit_gc_1000 - ns/op 296450512 ns/op 326051394 ns/op 0.91
BenchmarkDocument/tree_edit_gc_1000 - B/op 383465586 B/op 383466086 B/op 1.00
BenchmarkDocument/tree_edit_gc_1000 - allocs/op 145405 allocs/op 145407 allocs/op 1.00
BenchmarkDocument/tree_split_gc_100 - ns/op 2424120 ns/op 2611696 ns/op 0.93
BenchmarkDocument/tree_split_gc_100 - B/op 2386853 B/op 2386898 B/op 1.00
BenchmarkDocument/tree_split_gc_100 - allocs/op 10343 allocs/op 10343 allocs/op 1
BenchmarkDocument/tree_split_gc_1000 - ns/op 177878009 ns/op 196739556 ns/op 0.90
BenchmarkDocument/tree_split_gc_1000 - B/op 221991718 B/op 221991590 B/op 1.00
BenchmarkDocument/tree_split_gc_1000 - allocs/op 112258 allocs/op 112260 allocs/op 1.00
BenchmarkRPC/client_to_server - ns/op 353420540 ns/op 356144469 ns/op 0.99
BenchmarkRPC/client_to_server - B/op 16379480 B/op 17801216 B/op 0.92
BenchmarkRPC/client_to_server - allocs/op 165793 allocs/op 166911 allocs/op 0.99
BenchmarkRPC/client_to_client_via_server - ns/op 605835693 ns/op 613079232 ns/op 0.99
BenchmarkRPC/client_to_client_via_server - B/op 32833680 B/op 31722656 B/op 1.04
BenchmarkRPC/client_to_client_via_server - allocs/op 310777 allocs/op 313048 allocs/op 0.99
BenchmarkRPC/attach_large_document - ns/op 1286019861 ns/op 1479934941 ns/op 0.87
BenchmarkRPC/attach_large_document - B/op 1889217312 B/op 1890029520 B/op 1.00
BenchmarkRPC/attach_large_document - allocs/op 7513 allocs/op 7567 allocs/op 0.99
BenchmarkRPC/adminCli_to_server - ns/op 533013730 ns/op 537051132 ns/op 0.99
BenchmarkRPC/adminCli_to_server - B/op 35976968 B/op 36806452 B/op 0.98
BenchmarkRPC/adminCli_to_server - allocs/op 288660 allocs/op 289659 allocs/op 1.00
BenchmarkLocker - ns/op 65.45 ns/op 65.34 ns/op 1.00
BenchmarkLocker - B/op 16 B/op 16 B/op 1
BenchmarkLocker - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkLockerParallel - ns/op 38.24 ns/op 38.48 ns/op 0.99
BenchmarkLockerParallel - B/op 0 B/op 0 B/op NaN
BenchmarkLockerParallel - allocs/op 0 allocs/op 0 allocs/op NaN
BenchmarkLockerMoreKeys - ns/op 144.4 ns/op 145.1 ns/op 1.00
BenchmarkLockerMoreKeys - B/op 15 B/op 15 B/op 1
BenchmarkLockerMoreKeys - allocs/op 0 allocs/op 0 allocs/op NaN
BenchmarkChange/Push_10_Changes - ns/op 3772959 ns/op 3768343 ns/op 1.00
BenchmarkChange/Push_10_Changes - B/op 126330 B/op 126223 B/op 1.00
BenchmarkChange/Push_10_Changes - allocs/op 1254 allocs/op 1254 allocs/op 1
BenchmarkChange/Push_100_Changes - ns/op 13931187 ns/op 14005221 ns/op 0.99
BenchmarkChange/Push_100_Changes - B/op 640937 B/op 648654 B/op 0.99
BenchmarkChange/Push_100_Changes - allocs/op 6539 allocs/op 6539 allocs/op 1
BenchmarkChange/Push_1000_Changes - ns/op 111456124 ns/op 114047673 ns/op 0.98
BenchmarkChange/Push_1000_Changes - B/op 6075977 B/op 6036337 B/op 1.01
BenchmarkChange/Push_1000_Changes - allocs/op 62160 allocs/op 62157 allocs/op 1.00
BenchmarkChange/Pull_10_Changes - ns/op 2818469 ns/op 2839363 ns/op 0.99
BenchmarkChange/Pull_10_Changes - B/op 100847 B/op 100881 B/op 1.00
BenchmarkChange/Pull_10_Changes - allocs/op 952 allocs/op 952 allocs/op 1
BenchmarkChange/Pull_100_Changes - ns/op 4277739 ns/op 4308547 ns/op 0.99
BenchmarkChange/Pull_100_Changes - B/op 258282 B/op 258255 B/op 1.00
BenchmarkChange/Pull_100_Changes - allocs/op 3153 allocs/op 3154 allocs/op 1.00
BenchmarkChange/Pull_1000_Changes - ns/op 8215353 ns/op 8372656 ns/op 0.98
BenchmarkChange/Pull_1000_Changes - B/op 1399553 B/op 1396187 B/op 1.00
BenchmarkChange/Pull_1000_Changes - allocs/op 26873 allocs/op 26871 allocs/op 1.00
BenchmarkSnapshot/Push_3KB_snapshot - ns/op 16498114 ns/op 16777319 ns/op 0.98
BenchmarkSnapshot/Push_3KB_snapshot - B/op 809614 B/op 809995 B/op 1.00
BenchmarkSnapshot/Push_3KB_snapshot - allocs/op 6542 allocs/op 6542 allocs/op 1
BenchmarkSnapshot/Push_30KB_snapshot - ns/op 115887462 ns/op 117069671 ns/op 0.99
BenchmarkSnapshot/Push_30KB_snapshot - B/op 6309928 B/op 6250016 B/op 1.01
BenchmarkSnapshot/Push_30KB_snapshot - allocs/op 62169 allocs/op 62161 allocs/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - ns/op 6521185 ns/op 6563310 ns/op 0.99
BenchmarkSnapshot/Pull_3KB_snapshot - B/op 905771 B/op 905174 B/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - allocs/op 14881 allocs/op 14882 allocs/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - ns/op 15070154 ns/op 15000336 ns/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - B/op 6990313 B/op 6977754 B/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - allocs/op 144147 allocs/op 144148 allocs/op 1.00
BenchmarkSync/memory_sync_10_test - ns/op 6833 ns/op 6824 ns/op 1.00
BenchmarkSync/memory_sync_10_test - B/op 1286 B/op 1286 B/op 1
BenchmarkSync/memory_sync_10_test - allocs/op 38 allocs/op 38 allocs/op 1
BenchmarkSync/memory_sync_100_test - ns/op 52260 ns/op 51635 ns/op 1.01
BenchmarkSync/memory_sync_100_test - B/op 8639 B/op 8659 B/op 1.00
BenchmarkSync/memory_sync_100_test - allocs/op 273 allocs/op 274 allocs/op 1.00
BenchmarkSync/memory_sync_1000_test - ns/op 589653 ns/op 582724 ns/op 1.01
BenchmarkSync/memory_sync_1000_test - B/op 74650 B/op 74925 B/op 1.00
BenchmarkSync/memory_sync_1000_test - allocs/op 2124 allocs/op 2141 allocs/op 0.99
BenchmarkSync/memory_sync_10000_test - ns/op 7506832 ns/op 7320373 ns/op 1.03
BenchmarkSync/memory_sync_10000_test - B/op 766245 B/op 761425 B/op 1.01
BenchmarkSync/memory_sync_10000_test - allocs/op 20521 allocs/op 20593 allocs/op 1.00
BenchmarkTextEditing - ns/op 18541753512 ns/op 18585017456 ns/op 1.00
BenchmarkTextEditing - B/op 9041779840 B/op 9037385240 B/op 1.00
BenchmarkTextEditing - allocs/op 19922264 allocs/op 19920435 allocs/op 1.00

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

Please sign in to comment.