Skip to content

Commit

Permalink
Prevent to make empty operation and Add test code
Browse files Browse the repository at this point in the history
  • Loading branch information
justiceHui committed Jan 9, 2024
1 parent 293c7ec commit 4f7720f
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 1 deletion.
8 changes: 8 additions & 0 deletions pkg/document/json/tree.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,10 @@ func (t *Tree) Style(fromIdx, toIdx int, attributes map[string]string) bool {
panic("from should be less than or equal to to")
}

if len(attributes) == 0 {
return true
}

fromPos, err := t.Tree.FindPos(fromIdx)
if err != nil {
panic(err)
Expand Down Expand Up @@ -229,6 +233,10 @@ func (t *Tree) RemoveStyle(fromIdx, toIdx int, attributesToRemove []string) bool
panic("from should be less than or equal to to")
}

if len(attributesToRemove) == 0 {
return true
}

fromPos, err := t.Tree.FindPos(fromIdx)
if err != nil {
panic(err)
Expand Down
79 changes: 78 additions & 1 deletion test/integration/tree_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,6 @@ func TestTree(t *testing.T) {
assert.Equal(t, `<root><p>ab</p><p italic="true">cd</p></root>`, d1.Root().GetTree("t").ToXML())

assert.NoError(t, d1.Update(func(root *json.Object, p *presence.Presence) error {
// NOTE(sejongk): 0, 4 -> 0,1 / 3,4
root.GetTree("t").RemoveStyle(4, 8, []string{"italic"})
return nil
}))
Expand All @@ -767,6 +766,84 @@ func TestTree(t *testing.T) {

assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d1.Root().GetTree("t").Marshal())
assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d2.Root().GetTree("t").Marshal())

// remove not exist style
assert.NoError(t, d1.Update(func(root *json.Object, p *presence.Presence) error {
root.GetTree("t").RemoveStyle(4, 8, []string{"bold"})
return nil
}))

assert.NoError(t, c1.Sync(ctx))
assert.NoError(t, c2.Sync(ctx))

assert.Equal(t, `<root><p>ab</p><p>cd</p></root>`, d1.Root().GetTree("t").ToXML())
assert.Equal(t, `<root><p>ab</p><p>cd</p></root>`, d2.Root().GetTree("t").ToXML())

assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d1.Root().GetTree("t").Marshal())
assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d2.Root().GetTree("t").Marshal())
})

t.Run("set/remove style without any attributes", func(t *testing.T) {
ctx := context.Background()
d1 := document.New(helper.TestDocKey(t))
assert.NoError(t, c1.Attach(ctx, d1))

assert.NoError(t, d1.Update(func(root *json.Object, p *presence.Presence) error {
root.SetNewTree("t", &json.TreeNode{
Type: "root",
Children: []json.TreeNode{
{Type: "p", Children: []json.TreeNode{{Type: "text", Value: "ab"}}},
{Type: "p", Attributes: map[string]string{"italic": "true"}, Children: []json.TreeNode{{Type: "text", Value: "cd"}}},
},
})
return nil
}))
assert.NoError(t, c1.Sync(ctx))
assert.Equal(t, `<root><p>ab</p><p italic="true">cd</p></root>`, d1.Root().GetTree("t").ToXML())

assert.NoError(t, d1.Update(func(root *json.Object, p *presence.Presence) error {
// NOTE(sejongk): 0, 4 -> 0,1 / 3,4
root.GetTree("t").Style(0, 4, map[string]string{})
return nil
}))

assert.NoError(t, c1.Sync(ctx))
d2 := document.New(helper.TestDocKey(t))
assert.NoError(t, c2.Attach(ctx, d2))

assert.Equal(t, `<root><p>ab</p><p italic="true">cd</p></root>`, d1.Root().GetTree("t").ToXML())
assert.Equal(t, `<root><p>ab</p><p italic="true">cd</p></root>`, d2.Root().GetTree("t").ToXML())

assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}],"attributes":{"italic":"true"}}]}`, d1.Root().GetTree("t").Marshal())
assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}],"attributes":{"italic":"true"}}]}`, d2.Root().GetTree("t").Marshal())

assert.NoError(t, d1.Update(func(root *json.Object, p *presence.Presence) error {
root.GetTree("t").RemoveStyle(4, 8, []string{"italic"})
return nil
}))

assert.NoError(t, c1.Sync(ctx))
assert.NoError(t, c2.Sync(ctx))

assert.Equal(t, `<root><p>ab</p><p>cd</p></root>`, d1.Root().GetTree("t").ToXML())
assert.Equal(t, `<root><p>ab</p><p>cd</p></root>`, d2.Root().GetTree("t").ToXML())

assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d1.Root().GetTree("t").Marshal())
assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d2.Root().GetTree("t").Marshal())

assert.NoError(t, d1.Update(func(root *json.Object, p *presence.Presence) error {
root.GetTree("t").RemoveStyle(4, 8, []string{})
return nil
}))

assert.NoError(t, c1.Sync(ctx))
assert.NoError(t, c2.Sync(ctx))

assert.Equal(t, `<root><p>ab</p><p>cd</p></root>`, d1.Root().GetTree("t").ToXML())
assert.Equal(t, `<root><p>ab</p><p>cd</p></root>`, d2.Root().GetTree("t").ToXML())

assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d1.Root().GetTree("t").Marshal())
assert.Equal(t, `{"type":"root","children":[{"type":"p","children":[{"type":"text","value":"ab"}]},{"type":"p","children":[{"type":"text","value":"cd"}]}]}`, d2.Root().GetTree("t").Marshal())
})

// Concurrent editing, overlapping range test
Expand Down

1 comment on commit 4f7720f

@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: 4f7720f Previous: 4ea4eae Ratio
BenchmarkDocument/constructor_test - ns/op 1378 ns/op 1336 ns/op 1.03
BenchmarkDocument/constructor_test - B/op 1208 B/op 1208 B/op 1
BenchmarkDocument/constructor_test - allocs/op 20 allocs/op 20 allocs/op 1
BenchmarkDocument/status_test - ns/op 899.9 ns/op 785.2 ns/op 1.15
BenchmarkDocument/status_test - B/op 1176 B/op 1176 B/op 1
BenchmarkDocument/status_test - allocs/op 18 allocs/op 18 allocs/op 1
BenchmarkDocument/equals_test - ns/op 7141 ns/op 7092 ns/op 1.01
BenchmarkDocument/equals_test - B/op 6913 B/op 6913 B/op 1
BenchmarkDocument/equals_test - allocs/op 120 allocs/op 120 allocs/op 1
BenchmarkDocument/nested_update_test - ns/op 16069 ns/op 16151 ns/op 0.99
BenchmarkDocument/nested_update_test - B/op 11962 B/op 11963 B/op 1.00
BenchmarkDocument/nested_update_test - allocs/op 254 allocs/op 254 allocs/op 1
BenchmarkDocument/delete_test - ns/op 21951 ns/op 21933 ns/op 1.00
BenchmarkDocument/delete_test - B/op 15187 B/op 15188 B/op 1.00
BenchmarkDocument/delete_test - allocs/op 333 allocs/op 333 allocs/op 1
BenchmarkDocument/object_test - ns/op 8356 ns/op 8361 ns/op 1.00
BenchmarkDocument/object_test - B/op 6721 B/op 6721 B/op 1
BenchmarkDocument/object_test - allocs/op 116 allocs/op 116 allocs/op 1
BenchmarkDocument/array_test - ns/op 28390 ns/op 32610 ns/op 0.87
BenchmarkDocument/array_test - B/op 11818 B/op 11819 B/op 1.00
BenchmarkDocument/array_test - allocs/op 270 allocs/op 270 allocs/op 1
BenchmarkDocument/text_test - ns/op 30497 ns/op 30219 ns/op 1.01
BenchmarkDocument/text_test - B/op 14884 B/op 14795 B/op 1.01
BenchmarkDocument/text_test - allocs/op 468 allocs/op 468 allocs/op 1
BenchmarkDocument/text_composition_test - ns/op 28830 ns/op 28748 ns/op 1.00
BenchmarkDocument/text_composition_test - B/op 18398 B/op 18278 B/op 1.01
BenchmarkDocument/text_composition_test - allocs/op 477 allocs/op 477 allocs/op 1
BenchmarkDocument/rich_text_test - ns/op 79729 ns/op 79589 ns/op 1.00
BenchmarkDocument/rich_text_test - B/op 38644 B/op 38540 B/op 1.00
BenchmarkDocument/rich_text_test - allocs/op 1147 allocs/op 1147 allocs/op 1
BenchmarkDocument/counter_test - ns/op 16551 ns/op 16595 ns/op 1.00
BenchmarkDocument/counter_test - B/op 10210 B/op 10210 B/op 1
BenchmarkDocument/counter_test - allocs/op 236 allocs/op 236 allocs/op 1
BenchmarkDocument/text_edit_gc_100 - ns/op 2884869 ns/op 2884438 ns/op 1.00
BenchmarkDocument/text_edit_gc_100 - B/op 1658610 B/op 1655268 B/op 1.00
BenchmarkDocument/text_edit_gc_100 - allocs/op 17094 allocs/op 17093 allocs/op 1.00
BenchmarkDocument/text_edit_gc_1000 - ns/op 230637033 ns/op 230271811 ns/op 1.00
BenchmarkDocument/text_edit_gc_1000 - B/op 144398934 B/op 144376180 B/op 1.00
BenchmarkDocument/text_edit_gc_1000 - allocs/op 201025 allocs/op 201058 allocs/op 1.00
BenchmarkDocument/text_split_gc_100 - ns/op 3401547 ns/op 3383745 ns/op 1.01
BenchmarkDocument/text_split_gc_100 - B/op 2316939 B/op 2314004 B/op 1.00
BenchmarkDocument/text_split_gc_100 - allocs/op 16195 allocs/op 16197 allocs/op 1.00
BenchmarkDocument/text_split_gc_1000 - ns/op 289279328 ns/op 288385837 ns/op 1.00
BenchmarkDocument/text_split_gc_1000 - B/op 228950996 B/op 228887600 B/op 1.00
BenchmarkDocument/text_split_gc_1000 - allocs/op 204076 allocs/op 203930 allocs/op 1.00
BenchmarkDocument/text_delete_all_10000 - ns/op 10899698 ns/op 11000897 ns/op 0.99
BenchmarkDocument/text_delete_all_10000 - B/op 5809887 B/op 5809330 B/op 1.00
BenchmarkDocument/text_delete_all_10000 - allocs/op 40672 allocs/op 40669 allocs/op 1.00
BenchmarkDocument/text_delete_all_100000 - ns/op 183926897 ns/op 182534409 ns/op 1.01
BenchmarkDocument/text_delete_all_100000 - B/op 81891285 B/op 81903677 B/op 1.00
BenchmarkDocument/text_delete_all_100000 - allocs/op 411587 allocs/op 411647 allocs/op 1.00
BenchmarkDocument/text_100 - ns/op 221134 ns/op 218449 ns/op 1.01
BenchmarkDocument/text_100 - B/op 120106 B/op 118483 B/op 1.01
BenchmarkDocument/text_100 - allocs/op 5080 allocs/op 5080 allocs/op 1
BenchmarkDocument/text_1000 - ns/op 2408379 ns/op 2374004 ns/op 1.01
BenchmarkDocument/text_1000 - B/op 1169095 B/op 1153070 B/op 1.01
BenchmarkDocument/text_1000 - allocs/op 50084 allocs/op 50084 allocs/op 1
BenchmarkDocument/array_1000 - ns/op 1230382 ns/op 1196526 ns/op 1.03
BenchmarkDocument/array_1000 - B/op 1091360 B/op 1091301 B/op 1.00
BenchmarkDocument/array_1000 - allocs/op 11826 allocs/op 11826 allocs/op 1
BenchmarkDocument/array_10000 - ns/op 13267241 ns/op 13416629 ns/op 0.99
BenchmarkDocument/array_10000 - B/op 9800028 B/op 9799640 B/op 1.00
BenchmarkDocument/array_10000 - allocs/op 120291 allocs/op 120291 allocs/op 1
BenchmarkDocument/array_gc_100 - ns/op 147320 ns/op 143463 ns/op 1.03
BenchmarkDocument/array_gc_100 - B/op 132491 B/op 132481 B/op 1.00
BenchmarkDocument/array_gc_100 - allocs/op 1248 allocs/op 1248 allocs/op 1
BenchmarkDocument/array_gc_1000 - ns/op 1406467 ns/op 1378307 ns/op 1.02
BenchmarkDocument/array_gc_1000 - B/op 1158876 B/op 1158986 B/op 1.00
BenchmarkDocument/array_gc_1000 - allocs/op 12864 allocs/op 12865 allocs/op 1.00
BenchmarkDocument/counter_1000 - ns/op 200455 ns/op 198075 ns/op 1.01
BenchmarkDocument/counter_1000 - B/op 192853 B/op 192851 B/op 1.00
BenchmarkDocument/counter_1000 - allocs/op 5765 allocs/op 5765 allocs/op 1
BenchmarkDocument/counter_10000 - ns/op 2158716 ns/op 2156556 ns/op 1.00
BenchmarkDocument/counter_10000 - B/op 2087767 B/op 2087769 B/op 1.00
BenchmarkDocument/counter_10000 - allocs/op 59772 allocs/op 59772 allocs/op 1
BenchmarkDocument/object_1000 - ns/op 1349816 ns/op 1317018 ns/op 1.02
BenchmarkDocument/object_1000 - B/op 1428042 B/op 1427906 B/op 1.00
BenchmarkDocument/object_1000 - allocs/op 9845 allocs/op 9845 allocs/op 1
BenchmarkDocument/object_10000 - ns/op 14821298 ns/op 14690867 ns/op 1.01
BenchmarkDocument/object_10000 - B/op 12164509 B/op 12166752 B/op 1.00
BenchmarkDocument/object_10000 - allocs/op 100554 allocs/op 100562 allocs/op 1.00
BenchmarkDocument/tree_100 - ns/op 1019864 ns/op 1009303 ns/op 1.01
BenchmarkDocument/tree_100 - B/op 943667 B/op 943675 B/op 1.00
BenchmarkDocument/tree_100 - allocs/op 6099 allocs/op 6099 allocs/op 1
BenchmarkDocument/tree_1000 - ns/op 73045162 ns/op 72072982 ns/op 1.01
BenchmarkDocument/tree_1000 - B/op 86460154 B/op 86459854 B/op 1.00
BenchmarkDocument/tree_1000 - allocs/op 60111 allocs/op 60114 allocs/op 1.00
BenchmarkDocument/tree_10000 - ns/op 9433314273 ns/op 9443141797 ns/op 1.00
BenchmarkDocument/tree_10000 - B/op 8580654296 B/op 8580991992 B/op 1.00
BenchmarkDocument/tree_10000 - allocs/op 600215 allocs/op 600248 allocs/op 1.00
BenchmarkDocument/tree_delete_all_1000 - ns/op 75952636 ns/op 71663719 ns/op 1.06
BenchmarkDocument/tree_delete_all_1000 - B/op 87013016 B/op 86990239 B/op 1.00
BenchmarkDocument/tree_delete_all_1000 - allocs/op 67747 allocs/op 67749 allocs/op 1.00
BenchmarkDocument/tree_edit_gc_100 - ns/op 3736938 ns/op 3632525 ns/op 1.03
BenchmarkDocument/tree_edit_gc_100 - B/op 4121020 B/op 4121046 B/op 1.00
BenchmarkDocument/tree_edit_gc_100 - allocs/op 14356 allocs/op 14356 allocs/op 1
BenchmarkDocument/tree_edit_gc_1000 - ns/op 309269152 ns/op 295614209 ns/op 1.05
BenchmarkDocument/tree_edit_gc_1000 - B/op 383466182 B/op 383467646 B/op 1.00
BenchmarkDocument/tree_edit_gc_1000 - allocs/op 145408 allocs/op 145413 allocs/op 1.00
BenchmarkDocument/tree_split_gc_100 - ns/op 2513391 ns/op 2433512 ns/op 1.03
BenchmarkDocument/tree_split_gc_100 - B/op 2386876 B/op 2386869 B/op 1.00
BenchmarkDocument/tree_split_gc_100 - allocs/op 10341 allocs/op 10341 allocs/op 1
BenchmarkDocument/tree_split_gc_1000 - ns/op 185546780 ns/op 183611128 ns/op 1.01
BenchmarkDocument/tree_split_gc_1000 - B/op 221992130 B/op 221991942 B/op 1.00
BenchmarkDocument/tree_split_gc_1000 - allocs/op 112260 allocs/op 112259 allocs/op 1.00
BenchmarkRPC/client_to_server - ns/op 356260217 ns/op 355717978 ns/op 1.00
BenchmarkRPC/client_to_server - B/op 16388234 B/op 17228981 B/op 0.95
BenchmarkRPC/client_to_server - allocs/op 166790 allocs/op 166831 allocs/op 1.00
BenchmarkRPC/client_to_client_via_server - ns/op 611224568 ns/op 606482578 ns/op 1.01
BenchmarkRPC/client_to_client_via_server - B/op 31724716 B/op 32116544 B/op 0.99
BenchmarkRPC/client_to_client_via_server - allocs/op 312476 allocs/op 312901 allocs/op 1.00
BenchmarkRPC/attach_large_document - ns/op 1365547969 ns/op 1170164855 ns/op 1.17
BenchmarkRPC/attach_large_document - B/op 1878734440 B/op 1888403296 B/op 0.99
BenchmarkRPC/attach_large_document - allocs/op 7524 allocs/op 7527 allocs/op 1.00
BenchmarkRPC/adminCli_to_server - ns/op 542288731 ns/op 542495623 ns/op 1.00
BenchmarkRPC/adminCli_to_server - B/op 35969960 B/op 36802124 B/op 0.98
BenchmarkRPC/adminCli_to_server - allocs/op 289669 allocs/op 289677 allocs/op 1.00
BenchmarkLocker - ns/op 67.19 ns/op 65.96 ns/op 1.02
BenchmarkLocker - B/op 16 B/op 16 B/op 1
BenchmarkLocker - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkLockerParallel - ns/op 38.3 ns/op 38.94 ns/op 0.98
BenchmarkLockerParallel - B/op 0 B/op 0 B/op NaN
BenchmarkLockerParallel - allocs/op 0 allocs/op 0 allocs/op NaN
BenchmarkLockerMoreKeys - ns/op 151.9 ns/op 141.9 ns/op 1.07
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 3798801 ns/op 3782260 ns/op 1.00
BenchmarkChange/Push_10_Changes - B/op 126291 B/op 125995 B/op 1.00
BenchmarkChange/Push_10_Changes - allocs/op 1254 allocs/op 1253 allocs/op 1.00
BenchmarkChange/Push_100_Changes - ns/op 14128571 ns/op 14268879 ns/op 0.99
BenchmarkChange/Push_100_Changes - B/op 656215 B/op 639349 B/op 1.03
BenchmarkChange/Push_100_Changes - allocs/op 6539 allocs/op 6540 allocs/op 1.00
BenchmarkChange/Push_1000_Changes - ns/op 113688619 ns/op 114005417 ns/op 1.00
BenchmarkChange/Push_1000_Changes - B/op 6118648 B/op 6146349 B/op 1.00
BenchmarkChange/Push_1000_Changes - allocs/op 62157 allocs/op 62158 allocs/op 1.00
BenchmarkChange/Pull_10_Changes - ns/op 2842992 ns/op 2883610 ns/op 0.99
BenchmarkChange/Pull_10_Changes - B/op 100546 B/op 100810 B/op 1.00
BenchmarkChange/Pull_10_Changes - allocs/op 952 allocs/op 952 allocs/op 1
BenchmarkChange/Pull_100_Changes - ns/op 4324365 ns/op 4323201 ns/op 1.00
BenchmarkChange/Pull_100_Changes - B/op 257570 B/op 258124 B/op 1.00
BenchmarkChange/Pull_100_Changes - allocs/op 3154 allocs/op 3153 allocs/op 1.00
BenchmarkChange/Pull_1000_Changes - ns/op 8519432 ns/op 8208312 ns/op 1.04
BenchmarkChange/Pull_1000_Changes - B/op 1397618 B/op 1395853 B/op 1.00
BenchmarkChange/Pull_1000_Changes - allocs/op 26867 allocs/op 26874 allocs/op 1.00
BenchmarkSnapshot/Push_3KB_snapshot - ns/op 16909404 ns/op 16781594 ns/op 1.01
BenchmarkSnapshot/Push_3KB_snapshot - B/op 815072 B/op 806918 B/op 1.01
BenchmarkSnapshot/Push_3KB_snapshot - allocs/op 6545 allocs/op 6543 allocs/op 1.00
BenchmarkSnapshot/Push_30KB_snapshot - ns/op 118033781 ns/op 117538584 ns/op 1.00
BenchmarkSnapshot/Push_30KB_snapshot - B/op 6098413 B/op 6293910 B/op 0.97
BenchmarkSnapshot/Push_30KB_snapshot - allocs/op 62279 allocs/op 62159 allocs/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - ns/op 6620697 ns/op 6555276 ns/op 1.01
BenchmarkSnapshot/Pull_3KB_snapshot - B/op 903585 B/op 905327 B/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - allocs/op 14863 allocs/op 14879 allocs/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - ns/op 15040792 ns/op 14921599 ns/op 1.01
BenchmarkSnapshot/Pull_30KB_snapshot - B/op 6989899 B/op 6982547 B/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - allocs/op 144140 allocs/op 144138 allocs/op 1.00
BenchmarkSync/memory_sync_10_test - ns/op 6838 ns/op 6869 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 53030 ns/op 51839 ns/op 1.02
BenchmarkSync/memory_sync_100_test - B/op 8638 B/op 8646 B/op 1.00
BenchmarkSync/memory_sync_100_test - allocs/op 273 allocs/op 273 allocs/op 1
BenchmarkSync/memory_sync_1000_test - ns/op 591924 ns/op 597671 ns/op 0.99
BenchmarkSync/memory_sync_1000_test - B/op 74537 B/op 74301 B/op 1.00
BenchmarkSync/memory_sync_1000_test - allocs/op 2119 allocs/op 2106 allocs/op 1.01
BenchmarkSync/memory_sync_10000_test - ns/op 7214512 ns/op 7337210 ns/op 0.98
BenchmarkSync/memory_sync_10000_test - B/op 762923 B/op 759441 B/op 1.00
BenchmarkSync/memory_sync_10000_test - allocs/op 20622 allocs/op 20499 allocs/op 1.01
BenchmarkTextEditing - ns/op 18681910660 ns/op 18812245791 ns/op 0.99
BenchmarkTextEditing - B/op 9042184016 B/op 9038099880 B/op 1.00
BenchmarkTextEditing - allocs/op 19923586 allocs/op 19923868 allocs/op 1.00

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

Please sign in to comment.