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 aac2246 commit 77107e4
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 77107e4

@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: 77107e4 Previous: 4ea4eae Ratio
BenchmarkDocument/constructor_test - ns/op 1394 ns/op 1336 ns/op 1.04
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 939.7 ns/op 785.2 ns/op 1.20
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 7160 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 16104 ns/op 16151 ns/op 1.00
BenchmarkDocument/nested_update_test - B/op 11963 B/op 11963 B/op 1
BenchmarkDocument/nested_update_test - allocs/op 254 allocs/op 254 allocs/op 1
BenchmarkDocument/delete_test - ns/op 22111 ns/op 21933 ns/op 1.01
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 8323 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 28469 ns/op 32610 ns/op 0.87
BenchmarkDocument/array_test - B/op 11819 B/op 11819 B/op 1
BenchmarkDocument/array_test - allocs/op 270 allocs/op 270 allocs/op 1
BenchmarkDocument/text_test - ns/op 30509 ns/op 30219 ns/op 1.01
BenchmarkDocument/text_test - B/op 14883 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 28827 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 79619 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 16578 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 2884974 ns/op 2884438 ns/op 1.00
BenchmarkDocument/text_edit_gc_100 - B/op 1658390 B/op 1655268 B/op 1.00
BenchmarkDocument/text_edit_gc_100 - allocs/op 17092 allocs/op 17093 allocs/op 1.00
BenchmarkDocument/text_edit_gc_1000 - ns/op 229824514 ns/op 230271811 ns/op 1.00
BenchmarkDocument/text_edit_gc_1000 - B/op 144371280 B/op 144376180 B/op 1.00
BenchmarkDocument/text_edit_gc_1000 - allocs/op 200881 allocs/op 201058 allocs/op 1.00
BenchmarkDocument/text_split_gc_100 - ns/op 3391337 ns/op 3383745 ns/op 1.00
BenchmarkDocument/text_split_gc_100 - B/op 2317002 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 289766600 ns/op 288385837 ns/op 1.00
BenchmarkDocument/text_split_gc_1000 - B/op 228942056 B/op 228887600 B/op 1.00
BenchmarkDocument/text_split_gc_1000 - allocs/op 204047 allocs/op 203930 allocs/op 1.00
BenchmarkDocument/text_delete_all_10000 - ns/op 11224567 ns/op 11000897 ns/op 1.02
BenchmarkDocument/text_delete_all_10000 - B/op 5810646 B/op 5809330 B/op 1.00
BenchmarkDocument/text_delete_all_10000 - allocs/op 40675 allocs/op 40669 allocs/op 1.00
BenchmarkDocument/text_delete_all_100000 - ns/op 185271209 ns/op 182534409 ns/op 1.01
BenchmarkDocument/text_delete_all_100000 - B/op 81904330 B/op 81903677 B/op 1.00
BenchmarkDocument/text_delete_all_100000 - allocs/op 411637 allocs/op 411647 allocs/op 1.00
BenchmarkDocument/text_100 - ns/op 222181 ns/op 218449 ns/op 1.02
BenchmarkDocument/text_100 - B/op 120107 B/op 118483 B/op 1.01
BenchmarkDocument/text_100 - allocs/op 5080 allocs/op 5080 allocs/op 1
BenchmarkDocument/text_1000 - ns/op 2399483 ns/op 2374004 ns/op 1.01
BenchmarkDocument/text_1000 - B/op 1169094 B/op 1153070 B/op 1.01
BenchmarkDocument/text_1000 - allocs/op 50084 allocs/op 50084 allocs/op 1
BenchmarkDocument/array_1000 - ns/op 1196620 ns/op 1196526 ns/op 1.00
BenchmarkDocument/array_1000 - B/op 1091293 B/op 1091301 B/op 1.00
BenchmarkDocument/array_1000 - allocs/op 11826 allocs/op 11826 allocs/op 1
BenchmarkDocument/array_10000 - ns/op 13120389 ns/op 13416629 ns/op 0.98
BenchmarkDocument/array_10000 - B/op 9800124 B/op 9799640 B/op 1.00
BenchmarkDocument/array_10000 - allocs/op 120290 allocs/op 120291 allocs/op 1.00
BenchmarkDocument/array_gc_100 - ns/op 144671 ns/op 143463 ns/op 1.01
BenchmarkDocument/array_gc_100 - B/op 132474 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 1375004 ns/op 1378307 ns/op 1.00
BenchmarkDocument/array_gc_1000 - B/op 1158999 B/op 1158986 B/op 1.00
BenchmarkDocument/array_gc_1000 - allocs/op 12865 allocs/op 12865 allocs/op 1
BenchmarkDocument/counter_1000 - ns/op 202577 ns/op 198075 ns/op 1.02
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 2156171 ns/op 2156556 ns/op 1.00
BenchmarkDocument/counter_10000 - B/op 2087784 B/op 2087769 B/op 1.00
BenchmarkDocument/counter_10000 - allocs/op 59772 allocs/op 59772 allocs/op 1
BenchmarkDocument/object_1000 - ns/op 1364393 ns/op 1317018 ns/op 1.04
BenchmarkDocument/object_1000 - B/op 1427851 B/op 1427906 B/op 1.00
BenchmarkDocument/object_1000 - allocs/op 9844 allocs/op 9845 allocs/op 1.00
BenchmarkDocument/object_10000 - ns/op 14902529 ns/op 14690867 ns/op 1.01
BenchmarkDocument/object_10000 - B/op 12165790 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 1041716 ns/op 1009303 ns/op 1.03
BenchmarkDocument/tree_100 - B/op 943676 B/op 943675 B/op 1.00
BenchmarkDocument/tree_100 - allocs/op 6099 allocs/op 6099 allocs/op 1
BenchmarkDocument/tree_1000 - ns/op 75674576 ns/op 72072982 ns/op 1.05
BenchmarkDocument/tree_1000 - B/op 86460416 B/op 86459854 B/op 1.00
BenchmarkDocument/tree_1000 - allocs/op 60113 allocs/op 60114 allocs/op 1.00
BenchmarkDocument/tree_10000 - ns/op 9515260946 ns/op 9443141797 ns/op 1.01
BenchmarkDocument/tree_10000 - B/op 8580673528 B/op 8580991992 B/op 1.00
BenchmarkDocument/tree_10000 - allocs/op 600256 allocs/op 600248 allocs/op 1.00
BenchmarkDocument/tree_delete_all_1000 - ns/op 72660763 ns/op 71663719 ns/op 1.01
BenchmarkDocument/tree_delete_all_1000 - B/op 87011951 B/op 86990239 B/op 1.00
BenchmarkDocument/tree_delete_all_1000 - allocs/op 67751 allocs/op 67749 allocs/op 1.00
BenchmarkDocument/tree_edit_gc_100 - ns/op 3637734 ns/op 3632525 ns/op 1.00
BenchmarkDocument/tree_edit_gc_100 - B/op 4121021 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 298013839 ns/op 295614209 ns/op 1.01
BenchmarkDocument/tree_edit_gc_1000 - B/op 383466012 B/op 383467646 B/op 1.00
BenchmarkDocument/tree_edit_gc_1000 - allocs/op 145406 allocs/op 145413 allocs/op 1.00
BenchmarkDocument/tree_split_gc_100 - ns/op 2435879 ns/op 2433512 ns/op 1.00
BenchmarkDocument/tree_split_gc_100 - B/op 2386825 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 182366636 ns/op 183611128 ns/op 0.99
BenchmarkDocument/tree_split_gc_1000 - B/op 221990893 B/op 221991942 B/op 1.00
BenchmarkDocument/tree_split_gc_1000 - allocs/op 112248 allocs/op 112259 allocs/op 1.00
BenchmarkRPC/client_to_server - ns/op 366000475 ns/op 355717978 ns/op 1.03
BenchmarkRPC/client_to_server - B/op 16408109 B/op 17228981 B/op 0.95
BenchmarkRPC/client_to_server - allocs/op 166822 allocs/op 166831 allocs/op 1.00
BenchmarkRPC/client_to_client_via_server - ns/op 618998558 ns/op 606482578 ns/op 1.02
BenchmarkRPC/client_to_client_via_server - B/op 35920904 B/op 32116544 B/op 1.12
BenchmarkRPC/client_to_client_via_server - allocs/op 312576 allocs/op 312901 allocs/op 1.00
BenchmarkRPC/attach_large_document - ns/op 1248186293 ns/op 1170164855 ns/op 1.07
BenchmarkRPC/attach_large_document - B/op 1889202888 B/op 1888403296 B/op 1.00
BenchmarkRPC/attach_large_document - allocs/op 7485 allocs/op 7527 allocs/op 0.99
BenchmarkRPC/adminCli_to_server - ns/op 541774562 ns/op 542495623 ns/op 1.00
BenchmarkRPC/adminCli_to_server - B/op 37212820 B/op 36802124 B/op 1.01
BenchmarkRPC/adminCli_to_server - allocs/op 289710 allocs/op 289677 allocs/op 1.00
BenchmarkLocker - ns/op 65.56 ns/op 65.96 ns/op 0.99
BenchmarkLocker - B/op 16 B/op 16 B/op 1
BenchmarkLocker - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkLockerParallel - ns/op 38.29 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 143 ns/op 141.9 ns/op 1.01
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 3820445 ns/op 3782260 ns/op 1.01
BenchmarkChange/Push_10_Changes - B/op 125972 B/op 125995 B/op 1.00
BenchmarkChange/Push_10_Changes - allocs/op 1255 allocs/op 1253 allocs/op 1.00
BenchmarkChange/Push_100_Changes - ns/op 14215486 ns/op 14268879 ns/op 1.00
BenchmarkChange/Push_100_Changes - B/op 645280 B/op 639349 B/op 1.01
BenchmarkChange/Push_100_Changes - allocs/op 6539 allocs/op 6540 allocs/op 1.00
BenchmarkChange/Push_1000_Changes - ns/op 114454250 ns/op 114005417 ns/op 1.00
BenchmarkChange/Push_1000_Changes - B/op 5891071 B/op 6146349 B/op 0.96
BenchmarkChange/Push_1000_Changes - allocs/op 62157 allocs/op 62158 allocs/op 1.00
BenchmarkChange/Pull_10_Changes - ns/op 2898995 ns/op 2883610 ns/op 1.01
BenchmarkChange/Pull_10_Changes - B/op 100567 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 4409767 ns/op 4323201 ns/op 1.02
BenchmarkChange/Pull_100_Changes - B/op 257249 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 8565784 ns/op 8208312 ns/op 1.04
BenchmarkChange/Pull_1000_Changes - B/op 1394137 B/op 1395853 B/op 1.00
BenchmarkChange/Pull_1000_Changes - allocs/op 26866 allocs/op 26874 allocs/op 1.00
BenchmarkSnapshot/Push_3KB_snapshot - ns/op 17055357 ns/op 16781594 ns/op 1.02
BenchmarkSnapshot/Push_3KB_snapshot - B/op 797453 B/op 806918 B/op 0.99
BenchmarkSnapshot/Push_3KB_snapshot - allocs/op 6540 allocs/op 6543 allocs/op 1.00
BenchmarkSnapshot/Push_30KB_snapshot - ns/op 118440734 ns/op 117538584 ns/op 1.01
BenchmarkSnapshot/Push_30KB_snapshot - B/op 6083351 B/op 6293910 B/op 0.97
BenchmarkSnapshot/Push_30KB_snapshot - allocs/op 62156 allocs/op 62159 allocs/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - ns/op 6820518 ns/op 6555276 ns/op 1.04
BenchmarkSnapshot/Pull_3KB_snapshot - B/op 903223 B/op 905327 B/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - allocs/op 14876 allocs/op 14879 allocs/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - ns/op 15484364 ns/op 14921599 ns/op 1.04
BenchmarkSnapshot/Pull_30KB_snapshot - B/op 6978694 B/op 6982547 B/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - allocs/op 144145 allocs/op 144138 allocs/op 1.00
BenchmarkSync/memory_sync_10_test - ns/op 6937 ns/op 6869 ns/op 1.01
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 52268 ns/op 51839 ns/op 1.01
BenchmarkSync/memory_sync_100_test - B/op 8641 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 584452 ns/op 597671 ns/op 0.98
BenchmarkSync/memory_sync_1000_test - B/op 74733 B/op 74301 B/op 1.01
BenchmarkSync/memory_sync_1000_test - allocs/op 2129 allocs/op 2106 allocs/op 1.01
BenchmarkSync/memory_sync_10000_test - ns/op 7568762 ns/op 7337210 ns/op 1.03
BenchmarkSync/memory_sync_10000_test - B/op 759524 B/op 759441 B/op 1.00
BenchmarkSync/memory_sync_10000_test - allocs/op 20451 allocs/op 20499 allocs/op 1.00
BenchmarkTextEditing - ns/op 18793815165 ns/op 18812245791 ns/op 1.00
BenchmarkTextEditing - B/op 9042327168 B/op 9038099880 B/op 1.00
BenchmarkTextEditing - allocs/op 19924208 allocs/op 19923868 allocs/op 1.00

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

Please sign in to comment.