Tracking issue for Rope performance optimisation
Opened this issue · 3 comments
hawkw commented
Commit adds support for tendril
to the main (mutable) Rope
.
IGNORE THE PERF NUMBERS HERE THEY WERE WRONG
hawkw commented
Current performance:
- without
tendril
, withoutrebalance
:
test tests::insert::rope::at_3quarter::char_long ... bench: 341 ns/iter (+/- 51)
test tests::insert::rope::at_3quarter::char_short ... bench: 299 ns/iter (+/- 89)
test tests::insert::rope::at_3quarter::long ... bench: 256 ns/iter (+/- 45)
test tests::insert::rope::at_3quarter::rope_short ... bench: 414 ns/iter (+/- 105)
test tests::insert::rope::at_3quarter::short ... bench: 221 ns/iter (+/- 103)
test tests::insert::rope::at_end::char_long ... bench: 302 ns/iter (+/- 36)
test tests::insert::rope::at_end::char_short ... bench: 295 ns/iter (+/- 107)
test tests::insert::rope::at_end::long ... bench: 243 ns/iter (+/- 60)
test tests::insert::rope::at_end::rope_short ... bench: 459 ns/iter (+/- 97)
test tests::insert::rope::at_end::short ... bench: 257 ns/iter (+/- 75)
test tests::insert::rope::at_half::char_long ... bench: 273 ns/iter (+/- 83)
test tests::insert::rope::at_half::char_short ... bench: 269 ns/iter (+/- 153)
test tests::insert::rope::at_half::long ... bench: 218 ns/iter (+/- 62)
test tests::insert::rope::at_half::rope_short ... bench: 383 ns/iter (+/- 131)
test tests::insert::rope::at_half::short ... bench: 218 ns/iter (+/- 62)
test tests::insert::rope::at_quarter::char_long ... bench: 299 ns/iter (+/- 87)
test tests::insert::rope::at_quarter::char_short ... bench: 256 ns/iter (+/- 72)
test tests::insert::rope::at_quarter::long ... bench: 219 ns/iter (+/- 77)
test tests::insert::rope::at_quarter::rope_short ... bench: 400 ns/iter (+/- 65)
test tests::insert::rope::at_quarter::short ... bench: 218 ns/iter (+/- 89)
test tests::insert::rope::at_start::char_long ... bench: 113 ns/iter (+/- 33)
test tests::insert::rope::at_start::char_short ... bench: 87 ns/iter (+/- 17)
test tests::insert::rope::at_start::long ... bench: 88 ns/iter (+/- 30)
test tests::insert::rope::at_start::rope_short ... bench: 247 ns/iter (+/- 47)
test tests::insert::rope::at_start::short ... bench: 86 ns/iter (+/- 21)
test tests::insert::string::at_3quarter::char_long ... bench: 1,573 ns/iter (+/- 351)
test tests::insert::string::at_3quarter::char_short ... bench: 687 ns/iter (+/- 180)
test tests::insert::string::at_3quarter::long ... bench: 3,748 ns/iter (+/- 684)
test tests::insert::string::at_3quarter::short ... bench: 1,684 ns/iter (+/- 169)
test tests::insert::string::at_end::char_long ... bench: 1,375 ns/iter (+/- 280)
test tests::insert::string::at_end::char_short ... bench: 917 ns/iter (+/- 105)
test tests::insert::string::at_end::long ... bench: 3,617 ns/iter (+/- 215)
test tests::insert::string::at_end::short ... bench: 670 ns/iter (+/- 108)
test tests::insert::string::at_half::char_long ... bench: 1,453 ns/iter (+/- 207)
test tests::insert::string::at_half::char_short ... bench: 649 ns/iter (+/- 94)
test tests::insert::string::at_half::long ... bench: 1,677 ns/iter (+/- 297)
test tests::insert::string::at_half::short ... bench: 1,343 ns/iter (+/- 147)
test tests::insert::string::at_quarter::char_long ... bench: 2,161 ns/iter (+/- 565)
test tests::insert::string::at_quarter::char_short ... bench: 167 ns/iter (+/- 63)
test tests::insert::string::at_quarter::long ... bench: 2,213 ns/iter (+/- 67)
test tests::insert::string::at_quarter::short ... bench: 617 ns/iter (+/- 108)
test tests::insert::string::at_start::char_long ... bench: 2,864 ns/iter (+/- 743)
test tests::insert::string::at_start::char_short ... bench: 1,633 ns/iter (+/- 142)
test tests::insert::string::at_start::long ... bench: 3,329 ns/iter (+/- 694)
test tests::insert::string::at_start::short ... bench: 1,291 ns/iter (+/- 114)
test tests::rope_add_1000 ... bench: 104,953 ns/iter (+/- 32,329)
test tests::rope_insert_1000 ... bench: 316,117 ns/iter (+/- 54,065)
test tests::split::at_3quarter::long ... bench: 7,612 ns/iter (+/- 3,032)
test tests::split::at_3quarter::short ... bench: 103 ns/iter (+/- 14)
test tests::split::at_end::long ... bench: 7,531 ns/iter (+/- 1,400)
test tests::split::at_end::short ... bench: 84 ns/iter (+/- 8)
test tests::split::at_half::long ... bench: 7,792 ns/iter (+/- 999)
test tests::split::at_half::short ... bench: 103 ns/iter (+/- 28)
test tests::split::at_quarter::long ... bench: 7,693 ns/iter (+/- 1,696)
test tests::split::at_quarter::short ... bench: 103 ns/iter (+/- 7)
test tests::split::at_start::long ... bench: 7,537 ns/iter (+/- 2,412)
test tests::split::at_start::short ... bench: 87 ns/iter (+/- 54)
test tests::string_add_1000 ... bench: 52,712 ns/iter (+/- 12,208)
test tests::string_insert_1000 ... bench: 3,327,353 ns/iter (+/- 475,569)
- with
tendril
, withoutrebalance
:
test tests::insert::rope::at_3quarter::char_long ... bench: 347 ns/iter (+/- 97)
test tests::insert::rope::at_3quarter::char_short ... bench: 321 ns/iter (+/- 104)
test tests::insert::rope::at_3quarter::long ... bench: 283 ns/iter (+/- 252)
test tests::insert::rope::at_3quarter::rope_short ... bench: 490 ns/iter (+/- 202)
test tests::insert::rope::at_3quarter::short ... bench: 244 ns/iter (+/- 91)
test tests::insert::rope::at_end::char_long ... bench: 315 ns/iter (+/- 39)
test tests::insert::rope::at_end::char_short ... bench: 338 ns/iter (+/- 140)
test tests::insert::rope::at_end::long ... bench: 233 ns/iter (+/- 37)
test tests::insert::rope::at_end::rope_short ... bench: 507 ns/iter (+/- 126)
test tests::insert::rope::at_end::short ... bench: 255 ns/iter (+/- 53)
test tests::insert::rope::at_half::char_long ... bench: 351 ns/iter (+/- 104)
test tests::insert::rope::at_half::char_short ... bench: 333 ns/iter (+/- 229)
test tests::insert::rope::at_half::long ... bench: 254 ns/iter (+/- 63)
test tests::insert::rope::at_half::rope_long ... bench: 249,130 ns/iter (+/- 81,426)
test tests::insert::rope::at_half::rope_short ... bench: 483 ns/iter (+/- 78)
test tests::insert::rope::at_half::short ... bench: 241 ns/iter (+/- 31)
test tests::insert::rope::at_quarter::char_long ... bench: 330 ns/iter (+/- 52)
test tests::insert::rope::at_quarter::char_short ... bench: 308 ns/iter (+/- 144)
test tests::insert::rope::at_quarter::long ... bench: 247 ns/iter (+/- 128)
test tests::insert::rope::at_quarter::rope_short ... bench: 531 ns/iter (+/- 268)
test tests::insert::rope::at_quarter::short ... bench: 255 ns/iter (+/- 160)
test tests::insert::rope::at_start::char_long ... bench: 140 ns/iter (+/- 48)
test tests::insert::rope::at_start::char_short ... bench: 128 ns/iter (+/- 53)
test tests::insert::rope::at_start::long ... bench: 87 ns/iter (+/- 19)
test tests::insert::rope::at_start::rope_short ... bench: 306 ns/iter (+/- 146)
test tests::insert::rope::at_start::short ... bench: 90 ns/iter (+/- 20)
test tests::insert::string::at_3quarter::char_long ... bench: 1,657 ns/iter (+/- 173)
test tests::insert::string::at_3quarter::char_short ... bench: 1,485 ns/iter (+/- 152)
test tests::insert::string::at_3quarter::long ... bench: 2,839 ns/iter (+/- 602)
test tests::insert::string::at_3quarter::short ... bench: 1,510 ns/iter (+/- 227)
test tests::insert::string::at_end::char_long ... bench: 857 ns/iter (+/- 130)
test tests::insert::string::at_end::char_short ... bench: 866 ns/iter (+/- 129)
test tests::insert::string::at_end::long ... bench: 4,024 ns/iter (+/- 358)
test tests::insert::string::at_end::short ... bench: 1,368 ns/iter (+/- 216)
test tests::insert::string::at_half::char_long ... bench: 2,003 ns/iter (+/- 441)
test tests::insert::string::at_half::char_short ... bench: 1,608 ns/iter (+/- 168)
test tests::insert::string::at_half::long ... bench: 3,519 ns/iter (+/- 390)
test tests::insert::string::at_half::short ... bench: 1,813 ns/iter (+/- 212)
test tests::insert::string::at_quarter::char_long ... bench: 2,741 ns/iter (+/- 441)
test tests::insert::string::at_quarter::char_short ... bench: 1,596 ns/iter (+/- 149)
test tests::insert::string::at_quarter::long ... bench: 3,489 ns/iter (+/- 695)
test tests::insert::string::at_quarter::short ... bench: 776 ns/iter (+/- 191)
test tests::insert::string::at_start::char_long ... bench: 3,531 ns/iter (+/- 602)
test tests::insert::string::at_start::char_short ... bench: 500 ns/iter (+/- 134)
test tests::insert::string::at_start::long ... bench: 4,635 ns/iter (+/- 761)
test tests::insert::string::at_start::short ... bench: 1,690 ns/iter (+/- 170)
test tests::rope_add_1000 ... bench: 132,734 ns/iter (+/- 24,114)
test tests::rope_insert_1000 ... bench: 337,103 ns/iter (+/- 147,548)
test tests::split::at_3quarter::long ... bench: 4,434 ns/iter (+/- 954)
test tests::split::at_3quarter::short ... bench: 102 ns/iter (+/- 70)
test tests::split::at_end::long ... bench: 4,529 ns/iter (+/- 1,043)
test tests::split::at_end::short ... bench: 83 ns/iter (+/- 15)
test tests::split::at_half::long ... bench: 4,390 ns/iter (+/- 1,974)
test tests::split::at_half::short ... bench: 104 ns/iter (+/- 51)
test tests::split::at_quarter::long ... bench: 4,735 ns/iter (+/- 1,080)
test tests::split::at_quarter::short ... bench: 114 ns/iter (+/- 28)
test tests::split::at_start::long ... bench: 4,207 ns/iter (+/- 1,081)
test tests::split::at_start::short ... bench: 82 ns/iter (+/- 48)
test tests::string_add_1000 ... bench: 62,179 ns/iter (+/- 20,755)
test tests::string_insert_1000 ... bench: 3,620,457 ns/iter (+/- 745,017)
- with
tendril
, withrebalance
:
- without
tendril
, withrebalance
:
test tests::insert::rope::at_3quarter::char_long ... bench: 26,083 ns/iter (+/- 6,624)
test tests::insert::rope::at_3quarter::char_short ... bench: 154,971 ns/iter (+/- 24,423)
test tests::insert::rope::at_3quarter::long ... bench: 29,228 ns/iter (+/- 4,830)
test tests::insert::rope::at_3quarter::short ... bench: 151,643 ns/iter (+/- 29,083)
test tests::insert::rope::at_end::char_long ... bench: 79,919 ns/iter (+/- 10,961)
test tests::insert::rope::at_end::char_short ... bench: 235,341 ns/iter (+/- 8,116)
test tests::insert::rope::at_end::long ... bench: 85,981 ns/iter (+/- 3,094)
test tests::insert::rope::at_end::short ... bench: 203,144 ns/iter (+/- 5,199)
test tests::insert::rope::at_half::char_long ... bench: 11,413 ns/iter (+/- 1,671)
test tests::insert::rope::at_half::char_short ... bench: 194,569 ns/iter (+/- 5,895)
test tests::insert::rope::at_half::long ... bench: 7,377 ns/iter (+/- 297)
test tests::insert::rope::at_half::short ... bench: 134,002 ns/iter (+/- 5,200)
test tests::insert::rope::at_quarter::char_long ... bench: 12,632 ns/iter (+/- 2,714)
test tests::insert::rope::at_quarter::char_short ... bench: 100,363 ns/iter (+/- 4,394)
test tests::insert::rope::at_quarter::long ... bench: 4,987 ns/iter (+/- 1,613)
test tests::insert::rope::at_quarter::short ... bench: 147,303 ns/iter (+/- 8,913)
test tests::insert::rope::at_start::char_long ... bench: 104,997 ns/iter (+/- 4,148)
test tests::insert::rope::at_start::char_short ... bench: 383,676 ns/iter (+/- 82,117)
test tests::insert::rope::at_start::long ... bench: 149,549 ns/iter (+/- 23,105)
test tests::insert::rope::at_start::short ... bench: 51,908 ns/iter (+/- 10,548)
test tests::insert::string::at_3quarter::char_long ... bench: 1,158 ns/iter (+/- 281)
test tests::insert::string::at_3quarter::char_short ... bench: 782 ns/iter (+/- 229)
test tests::insert::string::at_3quarter::long ... bench: 2,510 ns/iter (+/- 587)
test tests::insert::string::at_3quarter::short ... bench: 1,539 ns/iter (+/- 318)
test tests::insert::string::at_end::char_long ... bench: 1,011 ns/iter (+/- 141)
test tests::insert::string::at_end::char_short ... bench: 1,565 ns/iter (+/- 126)
test tests::insert::string::at_end::long ... bench: 3,056 ns/iter (+/- 344)
test tests::insert::string::at_end::short ... bench: 1,653 ns/iter (+/- 186)
test tests::insert::string::at_half::char_long ... bench: 1,473 ns/iter (+/- 98)
test tests::insert::string::at_half::char_short ... bench: 666 ns/iter (+/- 102)
test tests::insert::string::at_half::long ... bench: 1,531 ns/iter (+/- 312)
test tests::insert::string::at_half::short ... bench: 611 ns/iter (+/- 165)
test tests::insert::string::at_quarter::char_long ... bench: 2,168 ns/iter (+/- 656)
test tests::insert::string::at_quarter::char_short ... bench: 526 ns/iter (+/- 135)
test tests::insert::string::at_quarter::long ... bench: 2,251 ns/iter (+/- 504)
test tests::insert::string::at_quarter::short ... bench: 841 ns/iter (+/- 154)
test tests::insert::string::at_start::char_long ... bench: 2,876 ns/iter (+/- 542)
test tests::insert::string::at_start::char_short ... bench: 769 ns/iter (+/- 124)
test tests::insert::string::at_start::long ... bench: 3,009 ns/iter (+/- 442)
test tests::insert::string::at_start::short ... bench: 1,735 ns/iter (+/- 154)
test tests::rope_add_1000 ... bench: 44,619,326 ns/iter (+/- 3,162,842)
test tests::rope_insert_1000 ... bench: 44,613,226 ns/iter (+/- 2,839,064)
test tests::split::at_3quarter::long ... bench: 8,053 ns/iter (+/- 2,709)
test tests::split::at_3quarter::short ... bench: 106 ns/iter (+/- 14)
test tests::split::at_end::long ... bench: 8,120 ns/iter (+/- 3,089)
test tests::split::at_end::short ... bench: 87 ns/iter (+/- 32)
test tests::split::at_half::long ... bench: 8,336 ns/iter (+/- 3,869)
test tests::split::at_half::short ... bench: 103 ns/iter (+/- 19)
test tests::split::at_quarter::long ... bench: 8,237 ns/iter (+/- 2,608)
test tests::split::at_quarter::short ... bench: 102 ns/iter (+/- 30)
test tests::split::at_start::long ... bench: 7,821 ns/iter (+/- 1,044)
test tests::split::at_start::short ... bench: 90 ns/iter (+/- 19)
test tests::string_add_1000 ... bench: 60,797 ns/iter (+/- 12,496)
test tests::string_insert_1000 ... bench: 3,774,596 ns/iter (+/- 869,845)