-
Notifications
You must be signed in to change notification settings - Fork 30
Comparing changes
Open a pull request
base repository: dfinity/stable-structures
base: v0.6.0-beta.0
head repository: dfinity/stable-structures
compare: v0.6.0-beta.1
- 9 commits
- 18 files changed
- 2 contributors
Commits on Sep 15, 2023
-
perf: reduce storage requirements for bounded btreemaps by ~25%. (#130)
I did an analysis on how big node entries are. A node can have at most 11 entries, but ~70% of nodes contain <= 8 entries. With that information, I was able to reduce the page size in BTreeMap V2 in the case where the keys and values are both bounded, resulting in a storage saving of ~25%. The report, generated by our new benchmarking framework, clearly shows the gains. V2 benchmarks saw a decline in the number of stable pages needed without compromising performance. ``` Benchmark: btreemap_insert_10mib_values measurements: instructions: 278228334 (0.00%) (no change) node_load_v2: 10377468 (0.00%) (no change) node_save_v2: 245958554 (0.00%) (no change) stable_memory_size: 33 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_4_1024 measurements: instructions: 938860652 (0.00%) (no change) node_load_v1: 246219371 (0.00%) (no change) node_save_v1: 370094431 (0.00%) (no change) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_4_1024_v2 measurements: instructions: 1284860075 (-0.01%) (change within noise threshold) node_load_v2: 302568355 (0.00%) (no change) node_save_v2: 661255273 (-0.02%) (change within noise threshold) stable_memory_size: 93 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_1024 measurements: instructions: 1084934108 (0.00%) (no change) node_load_v1: 286595797 (0.00%) (no change) node_save_v1: 394314301 (0.00%) (no change) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_1024_v2 measurements: instructions: 1458496280 (-0.01%) (change within noise threshold) node_load_v2: 344800342 (0.00%) (change within noise threshold) node_save_v2: 711692000 (-0.03%) (change within noise threshold) stable_memory_size: 139 (improved by 24.46%) --------------------------------------------------- Benchmark: btreemap_insert_blob_16_1024 measurements: instructions: 1177421502 (0.00%) (no change) node_load_v1: 362914338 (0.00%) (no change) node_save_v1: 403464072 (0.00%) (no change) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_16_1024_v2 measurements: instructions: 1588123192 (-0.02%) (change within noise threshold) node_load_v2: 440221819 (0.00%) (change within noise threshold) node_save_v2: 739898082 (-0.04%) (change within noise threshold) stable_memory_size: 162 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_insert_blob_32_1024 measurements: instructions: 1224612399 (0.00%) (no change) node_load_v1: 390780802 (0.00%) (no change) node_save_v1: 415826600 (0.00%) (no change) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_32_1024_v2 measurements: instructions: 1655605924 (-0.02%) (change within noise threshold) node_load_v2: 477569310 (0.00%) (no change) node_save_v2: 768954087 (-0.03%) (change within noise threshold) stable_memory_size: 174 (improved by 24.68%) --------------------------------------------------- Benchmark: btreemap_insert_blob_64_1024 measurements: instructions: 1464177820 (0.00%) (no change) node_load_v1: 595998298 (0.00%) (no change) node_save_v1: 418743231 (0.00%) (no change) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_64_1024_v2 measurements: instructions: 1928636138 (-0.01%) (change within noise threshold) node_load_v2: 692235029 (0.00%) (no change) node_save_v2: 785237958 (-0.03%) (change within noise threshold) stable_memory_size: 184 (improved by 25.20%) --------------------------------------------------- Benchmark: btreemap_insert_blob_128_1024 measurements: instructions: 1730313092 (0.00%) (no change) node_load_v1: 818923030 (0.00%) (no change) node_save_v1: 424573804 (0.00%) (no change) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_128_1024_v2 measurements: instructions: 2230592033 (-0.01%) (change within noise threshold) node_load_v2: 916541484 (0.00%) (no change) node_save_v2: 814064656 (-0.03%) (change within noise threshold) stable_memory_size: 196 (improved by 24.90%) --------------------------------------------------- Benchmark: btreemap_insert_blob_256_1024 measurements: instructions: 2255818313 (0.00%) (no change) node_load_v1: 1272224795 (0.00%) (no change) node_save_v1: 430174789 (0.00%) (no change) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_256_1024_v2 measurements: instructions: 2794429751 (-0.01%) (change within noise threshold) node_load_v2: 1368657545 (0.00%) (no change) node_save_v2: 851897559 (-0.02%) (change within noise threshold) stable_memory_size: 220 (improved by 24.91%) --------------------------------------------------- Benchmark: btreemap_insert_blob_512_1024 measurements: instructions: 3306816049 (0.00%) (no change) node_load_v1: 2162164471 (0.00%) (no change) node_save_v1: 447463180 (0.00%) (no change) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_512_1024_v2 measurements: instructions: 3902055470 (-0.00%) (change within noise threshold) node_load_v2: 2249757429 (0.00%) (no change) node_save_v2: 953602203 (-0.01%) (change within noise threshold) stable_memory_size: 264 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_insert_u64_u64 measurements: instructions: 771845193 (0.00%) (no change) node_load_v1: 274520203 (0.00%) (no change) node_save_v1: 266527196 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_u64_u64_v2 measurements: instructions: 848175865 (0.67%) (change within noise threshold) node_load_v2: 324943098 (1.24%) (change within noise threshold) node_save_v2: 295936099 (0.23%) (change within noise threshold) stable_memory_size: 7 (improved by 12.50%) --------------------------------------------------- Benchmark: btreemap_insert_u64_blob_8 measurements: instructions: 750190911 (0.00%) (no change) node_load_v1: 276866073 (0.00%) (no change) node_save_v1: 255664450 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_u64_blob_8_v2 measurements: instructions: 806917372 (0.11%) (change within noise threshold) node_load_v2: 320660408 (0.10%) (change within noise threshold) node_save_v2: 272412341 (0.12%) (change within noise threshold) stable_memory_size: 6 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_u64 measurements: instructions: 684689096 (0.00%) (no change) node_load_v1: 277937358 (0.00%) (no change) node_save_v1: 189388784 (0.00%) (no change) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_u64_v2 measurements: instructions: 805533962 (0.84%) (change within noise threshold) node_load_v2: 358481378 (1.04%) (change within noise threshold) node_save_v2: 230438833 (0.29%) (change within noise threshold) stable_memory_size: 5 (improved by 28.57%) --------------------------------------------------- Benchmark: btreemap_get_blob_4_1024 measurements: instructions: 401718154 (0.00%) (no change) node_load_v1: 259275488 (0.00%) (no change) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_4_1024_v2 measurements: instructions: 480241876 (0.00%) (no change) node_load_v2: 329436785 (0.00%) (no change) stable_memory_size: 93 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_get_blob_8_1024 measurements: instructions: 473964224 (0.00%) (no change) node_load_v1: 304258691 (0.00%) (no change) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_8_1024_v2 measurements: instructions: 549627424 (0.00%) (no change) node_load_v2: 371386524 (0.00%) (no change) stable_memory_size: 139 (improved by 24.46%) --------------------------------------------------- Benchmark: btreemap_get_blob_16_1024 measurements: instructions: 553966238 (0.00%) (no change) node_load_v1: 383794822 (0.00%) (no change) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_16_1024_v2 measurements: instructions: 637391324 (0.00%) (no change) node_load_v2: 464133703 (0.00%) (no change) stable_memory_size: 162 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_get_blob_32_1024 measurements: instructions: 591716960 (0.00%) (no change) node_load_v1: 410436451 (0.00%) (no change) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_32_1024_v2 measurements: instructions: 679662006 (0.00%) (no change) node_load_v2: 495574095 (0.00%) (no change) stable_memory_size: 174 (improved by 24.68%) --------------------------------------------------- Benchmark: btreemap_get_blob_64_1024 measurements: instructions: 814621589 (0.00%) (no change) node_load_v1: 627796876 (0.00%) (no change) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_64_1024_v2 measurements: instructions: 902934555 (0.00%) (no change) node_load_v2: 708745655 (0.00%) (no change) stable_memory_size: 184 (improved by 25.20%) --------------------------------------------------- Benchmark: btreemap_get_blob_128_1024 measurements: instructions: 1036041908 (0.00%) (no change) node_load_v1: 839537545 (0.00%) (no change) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_128_1024_v2 measurements: instructions: 1140173768 (0.00%) (no change) node_load_v2: 933785784 (0.00%) (no change) stable_memory_size: 196 (improved by 24.90%) --------------------------------------------------- Benchmark: btreemap_get_u64_u64 measurements: instructions: 412643077 (0.00%) (no change) node_load_v1: 290922161 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_u64_u64_v2 measurements: instructions: 477401878 (1.60%) (change within noise threshold) node_load_v2: 347289827 (1.76%) (change within noise threshold) stable_memory_size: 7 (improved by 12.50%) --------------------------------------------------- Benchmark: btreemap_get_u64_blob_8 measurements: instructions: 409579480 (0.00%) (no change) node_load_v1: 292395667 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_u64_blob_8_v2 measurements: instructions: 465392548 (0.00%) (no change) node_load_v2: 342799065 (0.00%) (no change) stable_memory_size: 6 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_get_blob_8_u64 measurements: instructions: 426482546 (0.00%) (no change) node_load_v1: 294602061 (0.00%) (no change) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_8_u64_v2 measurements: instructions: 523481237 (regressed by 2.27%) node_load_v2: 383093469 (regressed by 2.43%) stable_memory_size: 5 (improved by 28.57%) --------------------------------------------------- Benchmark: btreemap_get_blob_256_1024 measurements: instructions: 1523593515 (0.00%) (no change) node_load_v1: 1301924960 (0.00%) (no change) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_256_1024_v2 measurements: instructions: 1628351182 (0.00%) (no change) node_load_v2: 1392993062 (0.00%) (no change) stable_memory_size: 220 (improved by 24.91%) --------------------------------------------------- Benchmark: btreemap_get_blob_512_1024 measurements: instructions: 2489215042 (0.00%) (no change) node_load_v1: 2219164452 (0.00%) (no change) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_512_1024_v2 measurements: instructions: 2596163236 (0.00%) (no change) node_load_v2: 2312346281 (0.00%) (no change) stable_memory_size: 264 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_remove_blob_4_1024 measurements: instructions: 1006445824 (0.00%) (no change) node_load_v1: 269171795 (0.00%) (no change) node_save_v1: 421165272 (0.00%) (no change) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_4_1024_v2 measurements: instructions: 1417601784 (-0.00%) (change within noise threshold) node_load_v2: 334156300 (0.00%) (change within noise threshold) node_save_v2: 771175843 (-0.01%) (change within noise threshold) stable_memory_size: 93 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_1024 measurements: instructions: 1300448303 (0.00%) (no change) node_load_v1: 325916114 (0.00%) (no change) node_save_v1: 562174712 (0.00%) (no change) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_1024_v2 measurements: instructions: 1841887486 (-0.01%) (change within noise threshold) node_load_v2: 391438934 (0.00%) (no change) node_save_v2: 1045403922 (-0.01%) (change within noise threshold) stable_memory_size: 139 (improved by 24.46%) --------------------------------------------------- Benchmark: btreemap_remove_blob_16_1024 measurements: instructions: 1544917110 (0.00%) (no change) node_load_v1: 420249550 (0.00%) (no change) node_save_v1: 654430779 (0.00%) (no change) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_16_1024_v2 measurements: instructions: 2218448732 (-0.01%) (change within noise threshold) node_load_v2: 513947291 (0.00%) (no change) node_save_v2: 1243769246 (-0.01%) (change within noise threshold) stable_memory_size: 162 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_remove_blob_32_1024 measurements: instructions: 1622774819 (0.00%) (no change) node_load_v1: 443614945 (0.00%) (no change) node_save_v1: 681136613 (0.00%) (no change) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_32_1024_v2 measurements: instructions: 2327559094 (-0.01%) (change within noise threshold) node_load_v2: 545935373 (-0.00%) (change within noise threshold) node_save_v2: 1295876421 (-0.01%) (change within noise threshold) stable_memory_size: 174 (improved by 24.68%) --------------------------------------------------- Benchmark: btreemap_remove_blob_64_1024 measurements: instructions: 1917032351 (0.00%) (no change) node_load_v1: 675469604 (0.00%) (no change) node_save_v1: 700312977 (0.00%) (no change) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_64_1024_v2 measurements: instructions: 2663779711 (-0.01%) (change within noise threshold) node_load_v2: 783139557 (0.00%) (no change) node_save_v2: 1347825662 (-0.01%) (change within noise threshold) stable_memory_size: 184 (improved by 25.20%) --------------------------------------------------- Benchmark: btreemap_remove_blob_128_1024 measurements: instructions: 2236575844 (0.00%) (no change) node_load_v1: 922607545 (0.00%) (no change) node_save_v1: 716920195 (0.00%) (no change) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_128_1024_v2 measurements: instructions: 3031279182 (-0.00%) (change within noise threshold) node_load_v2: 1029479582 (0.00%) (no change) node_save_v2: 1412131798 (-0.01%) (change within noise threshold) stable_memory_size: 196 (improved by 24.90%) --------------------------------------------------- Benchmark: btreemap_remove_blob_256_1024 measurements: instructions: 2839195280 (0.00%) (no change) node_load_v1: 1421754484 (0.00%) (no change) node_save_v1: 722710062 (0.00%) (no change) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_256_1024_v2 measurements: instructions: 3696334312 (-0.00%) (change within noise threshold) node_load_v2: 1528516744 (0.00%) (no change) node_save_v2: 1474999328 (-0.01%) (change within noise threshold) stable_memory_size: 220 (improved by 24.91%) --------------------------------------------------- Benchmark: btreemap_remove_blob_512_1024 measurements: instructions: 4124317339 (0.00%) (no change) node_load_v1: 2441544783 (0.00%) (no change) node_save_v1: 765030850 (0.00%) (no change) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_512_1024_v2 measurements: instructions: 5148900105 (-0.00%) (change within noise threshold) node_load_v2: 2551454747 (0.00%) (change within noise threshold) node_save_v2: 1679737551 (-0.00%) (change within noise threshold) stable_memory_size: 264 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_remove_u64_u64 measurements: instructions: 1110124274 (0.00%) (no change) node_load_v1: 314148033 (0.00%) (no change) node_save_v1: 483110284 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_u64_u64_v2 measurements: instructions: 1193726508 (1.02%) (change within noise threshold) node_load_v2: 372663005 (regressed by 2.18%) node_save_v2: 507231342 (0.68%) (change within noise threshold) stable_memory_size: 7 (improved by 12.50%) --------------------------------------------------- Benchmark: btreemap_remove_u64_blob_8 measurements: instructions: 1072866879 (0.00%) (no change) node_load_v1: 313757215 (0.00%) (no change) node_save_v1: 457702957 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_u64_blob_8_v2 measurements: instructions: 1131312211 (0.25%) (change within noise threshold) node_load_v2: 364893854 (0.54%) (change within noise threshold) node_save_v2: 464658073 (0.15%) (change within noise threshold) stable_memory_size: 6 (improved by 25.00%) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_u64 measurements: instructions: 903826016 (0.00%) (no change) node_load_v1: 318747944 (0.00%) (no change) node_save_v1: 302202576 (0.00%) (no change) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_u64_v2 measurements: instructions: 1051368948 (1.19%) (change within noise threshold) node_load_v2: 405289279 (regressed by 2.05%) node_save_v2: 364434857 (0.84%) (change within noise threshold) stable_memory_size: 5 (improved by 28.57%) --------------------------------------------------- ```
Configuration menu - View commit details
-
Copy full SHA for 6a17564 - Browse repository at this point
Copy the full SHA 6a17564View commit details
Commits on Sep 19, 2023
-
feat(log): add an iterator over thread-local log (#132)
This change introduces a stable log iterator that can enumerate entries in stable log stored in a thread-local variable. This simplifies dealing with stable logs a lot; currently, clients have to replicate the same logic for each log, see ckBTC for example[^1]. [^1]: https://github.com/dfinity/ic/blob/712910487fe14924cb80622af47b31210cab95bc/rs/bitcoin/ckbtc/minter/src/storage.rs#L37
Configuration menu - View commit details
-
Copy full SHA for 5de8355 - Browse repository at this point
Copy the full SHA 5de8355View commit details -
perf: [BTreeMap V2] avoid allocating large buffer on save. (#131)
When saving a BTreeMap V2 node, a large buffer was allocated where we first serialize the node, and then at a later stage we break this buffer into smaller pages and write those into stable memory. This was simpler to implement, yet inefficient. This PR removes the large buffer allocation and instead uses a `NodeWriter`, which write the node incrementally without the need to allocate large buffers on the heap. This narrows the performance gap even further between v1 and v2 as seen by the following benchmark report. ``` --------------------------------------------------- Benchmark: memory_manager_baseline measurements: instructions: 1176576551 (0.00%) (no change) stable_memory_size: 8000 (0.00%) (no change) --------------------------------------------------- Benchmark: memory_manager_overhead measurements: instructions: 1182012269 (0.00%) (no change) stable_memory_size: 8321 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_10mib_values measurements: instructions: 158321842 (improved by 43.10%) node_load_v2: 10377468 (0.00%) (no change) node_save_v2: 126007892 (improved by 48.77%) stable_memory_size: 33 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_4_1024 measurements: instructions: 938459480 (-0.04%) (change within noise threshold) node_load_v1: 246219371 (0.00%) (no change) node_save_v1: 369888833 (-0.06%) (change within noise threshold) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_4_1024_v2 measurements: instructions: 1033183548 (improved by 19.60%) node_load_v2: 302721338 (0.05%) (change within noise threshold) node_save_v2: 410566944 (improved by 37.92%) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_1024 measurements: instructions: 1084454578 (-0.04%) (change within noise threshold) node_load_v1: 286595797 (0.00%) (no change) node_save_v1: 394091363 (-0.06%) (change within noise threshold) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_1024_v2 measurements: instructions: 1183969018 (improved by 18.83%) node_load_v2: 344994802 (0.06%) (change within noise threshold) node_save_v2: 438155700 (improved by 38.45%) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_16_1024 measurements: instructions: 1176903332 (-0.04%) (change within noise threshold) node_load_v1: 362914338 (0.00%) (no change) node_save_v1: 403232566 (-0.06%) (change within noise threshold) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_16_1024_v2 measurements: instructions: 1295546890 (improved by 18.44%) node_load_v2: 440399043 (0.04%) (change within noise threshold) node_save_v2: 448818266 (improved by 39.36%) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_32_1024 measurements: instructions: 1224078359 (-0.04%) (change within noise threshold) node_load_v1: 390780802 (0.00%) (no change) node_save_v1: 415591575 (-0.06%) (change within noise threshold) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_32_1024_v2 measurements: instructions: 1345918082 (improved by 18.72%) node_load_v2: 477582317 (0.00%) (change within noise threshold) node_save_v2: 461418653 (improved by 40.01%) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_64_1024 measurements: instructions: 1463634810 (-0.04%) (change within noise threshold) node_load_v1: 595998298 (0.00%) (no change) node_save_v1: 418506217 (-0.06%) (change within noise threshold) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_64_1024_v2 measurements: instructions: 1606536169 (improved by 16.71%) node_load_v2: 692239035 (0.00%) (change within noise threshold) node_save_v2: 464863981 (improved by 40.82%) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_128_1024 measurements: instructions: 1729768012 (-0.03%) (change within noise threshold) node_load_v1: 818923030 (0.00%) (no change) node_save_v1: 424336331 (-0.06%) (change within noise threshold) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_128_1024_v2 measurements: instructions: 1885672741 (improved by 15.47%) node_load_v2: 916598797 (0.01%) (change within noise threshold) node_save_v2: 470957703 (improved by 42.16%) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_256_1024 measurements: instructions: 2255269553 (-0.02%) (change within noise threshold) node_load_v1: 1272224795 (0.00%) (no change) node_save_v1: 429936500 (-0.06%) (change within noise threshold) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_256_1024_v2 measurements: instructions: 2416164659 (improved by 13.54%) node_load_v2: 1368714490 (0.00%) (change within noise threshold) node_save_v2: 476456802 (improved by 44.08%) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_512_1024 measurements: instructions: 3306266369 (-0.02%) (change within noise threshold) node_load_v1: 2162164471 (0.00%) (no change) node_save_v1: 447224687 (-0.05%) (change within noise threshold) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_512_1024_v2 measurements: instructions: 3439168228 (improved by 11.86%) node_load_v2: 2249806809 (0.00%) (change within noise threshold) node_save_v2: 493589161 (improved by 48.25%) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_u64_u64 measurements: instructions: 771295973 (-0.07%) (change within noise threshold) node_load_v1: 274520203 (0.00%) (no change) node_save_v1: 266429035 (-0.04%) (change within noise threshold) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_u64_u64_v2 measurements: instructions: 844848075 (0.27%) (change within noise threshold) node_load_v2: 320667801 (-0.09%) (change within noise threshold) node_save_v2: 298115032 (0.97%) (change within noise threshold) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_u64_blob_8 measurements: instructions: 749642151 (-0.07%) (change within noise threshold) node_load_v1: 276866073 (0.00%) (no change) node_save_v1: 255566331 (-0.04%) (change within noise threshold) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_u64_blob_8_v2 measurements: instructions: 820358615 (1.77%) (change within noise threshold) node_load_v2: 320406521 (0.02%) (change within noise threshold) node_save_v2: 287445446 (regressed by 5.64%) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_u64 measurements: instructions: 684209106 (-0.07%) (change within noise threshold) node_load_v1: 277937358 (0.00%) (no change) node_save_v1: 189165744 (-0.12%) (change within noise threshold) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_insert_blob_8_u64_v2 measurements: instructions: 802688497 (0.48%) (change within noise threshold) node_load_v2: 354976358 (0.05%) (change within noise threshold) node_save_v2: 234878135 (regressed by 2.23%) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_4_1024 measurements: instructions: 401718154 (0.00%) (no change) node_load_v1: 259275488 (0.00%) (no change) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_4_1024_v2 measurements: instructions: 480241876 (0.00%) (no change) node_load_v2: 329436785 (0.00%) (no change) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_8_1024 measurements: instructions: 473964224 (0.00%) (no change) node_load_v1: 304258691 (0.00%) (no change) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_8_1024_v2 measurements: instructions: 549627424 (0.00%) (no change) node_load_v2: 371386524 (0.00%) (no change) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_16_1024 measurements: instructions: 553966238 (0.00%) (no change) node_load_v1: 383794822 (0.00%) (no change) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_16_1024_v2 measurements: instructions: 637391324 (0.00%) (no change) node_load_v2: 464133703 (0.00%) (no change) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_32_1024 measurements: instructions: 591716960 (0.00%) (no change) node_load_v1: 410436451 (0.00%) (no change) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_32_1024_v2 measurements: instructions: 679662006 (0.00%) (no change) node_load_v2: 495574095 (0.00%) (no change) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_64_1024 measurements: instructions: 814621589 (0.00%) (no change) node_load_v1: 627796876 (0.00%) (no change) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_64_1024_v2 measurements: instructions: 902934555 (0.00%) (no change) node_load_v2: 708745655 (0.00%) (no change) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_128_1024 measurements: instructions: 1036041908 (0.00%) (no change) node_load_v1: 839537545 (0.00%) (no change) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_128_1024_v2 measurements: instructions: 1140173858 (0.00%) (change within noise threshold) node_load_v2: 933785784 (0.00%) (no change) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_u64_u64 measurements: instructions: 412643077 (0.00%) (no change) node_load_v1: 290922161 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_u64_u64_v2 measurements: instructions: 469869306 (0.00%) (change within noise threshold) node_load_v2: 341278594 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_u64_blob_8 measurements: instructions: 409579480 (0.00%) (no change) node_load_v1: 292395667 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_u64_blob_8_v2 measurements: instructions: 465392638 (0.00%) (change within noise threshold) node_load_v2: 342799065 (0.00%) (no change) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_8_u64 measurements: instructions: 426482546 (0.00%) (no change) node_load_v1: 294602061 (0.00%) (no change) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_8_u64_v2 measurements: instructions: 511860381 (-0.00%) (change within noise threshold) node_load_v2: 373992060 (0.00%) (no change) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_256_1024 measurements: instructions: 1523593515 (0.00%) (no change) node_load_v1: 1301924960 (0.00%) (no change) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_256_1024_v2 measurements: instructions: 1628351272 (0.00%) (change within noise threshold) node_load_v2: 1392993062 (0.00%) (no change) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_512_1024 measurements: instructions: 2489215042 (0.00%) (no change) node_load_v1: 2219164452 (0.00%) (no change) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_get_blob_512_1024_v2 measurements: instructions: 2596163236 (0.00%) (no change) node_load_v2: 2312346281 (0.00%) (no change) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_4_1024 measurements: instructions: 1005989932 (-0.05%) (change within noise threshold) node_load_v1: 269171795 (0.00%) (no change) node_save_v1: 420883123 (-0.07%) (change within noise threshold) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_4_1024_v2 measurements: instructions: 1123916215 (improved by 20.72%) node_load_v2: 334520048 (0.11%) (change within noise threshold) node_save_v2: 477506500 (improved by 38.09%) stable_memory_size: 124 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_1024 measurements: instructions: 1299825273 (-0.05%) (change within noise threshold) node_load_v1: 325916114 (0.00%) (no change) node_save_v1: 561793980 (-0.07%) (change within noise threshold) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_1024_v2 measurements: instructions: 1435762834 (improved by 22.05%) node_load_v2: 391933707 (0.13%) (change within noise threshold) node_save_v2: 638595044 (improved by 38.92%) stable_memory_size: 184 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_16_1024 measurements: instructions: 1544195176 (-0.05%) (change within noise threshold) node_load_v1: 420249550 (0.00%) (no change) node_save_v1: 653989748 (-0.07%) (change within noise threshold) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_16_1024_v2 measurements: instructions: 1718977571 (improved by 22.52%) node_load_v2: 514792050 (0.16%) (change within noise threshold) node_save_v2: 742821168 (improved by 40.28%) stable_memory_size: 216 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_32_1024 measurements: instructions: 1622025795 (-0.05%) (change within noise threshold) node_load_v1: 443614945 (0.00%) (no change) node_save_v1: 680680401 (-0.07%) (change within noise threshold) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_32_1024_v2 measurements: instructions: 1805728812 (improved by 22.42%) node_load_v2: 545888022 (-0.01%) (change within noise threshold) node_save_v2: 773231206 (improved by 40.34%) stable_memory_size: 231 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_64_1024 measurements: instructions: 1916261049 (-0.04%) (change within noise threshold) node_load_v1: 675469604 (0.00%) (no change) node_save_v1: 699843250 (-0.07%) (change within noise threshold) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_64_1024_v2 measurements: instructions: 2111770035 (improved by 20.73%) node_load_v2: 783191220 (0.01%) (change within noise threshold) node_save_v2: 795030992 (improved by 41.02%) stable_memory_size: 246 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_128_1024 measurements: instructions: 2235786044 (-0.04%) (change within noise threshold) node_load_v1: 922607545 (0.00%) (no change) node_save_v1: 716437888 (-0.07%) (change within noise threshold) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_128_1024_v2 measurements: instructions: 2434217251 (improved by 19.70%) node_load_v2: 1029552036 (0.01%) (change within noise threshold) node_save_v2: 813731257 (improved by 42.38%) stable_memory_size: 261 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_256_1024 measurements: instructions: 2838422216 (-0.03%) (change within noise threshold) node_load_v1: 1421754484 (0.00%) (no change) node_save_v1: 722240539 (-0.06%) (change within noise threshold) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_256_1024_v2 measurements: instructions: 3039500513 (improved by 17.77%) node_load_v2: 1528561438 (0.00%) (change within noise threshold) node_save_v2: 816969139 (improved by 44.62%) stable_memory_size: 293 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_512_1024 measurements: instructions: 4123516635 (-0.02%) (change within noise threshold) node_load_v1: 2441544783 (0.00%) (no change) node_save_v1: 764541981 (-0.06%) (change within noise threshold) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_512_1024_v2 measurements: instructions: 4332567176 (improved by 15.86%) node_load_v2: 2551503756 (0.00%) (change within noise threshold) node_save_v2: 863236858 (improved by 48.61%) stable_memory_size: 352 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_u64_u64 measurements: instructions: 1109353494 (-0.07%) (change within noise threshold) node_load_v1: 314148033 (0.00%) (no change) node_save_v1: 482917665 (-0.04%) (change within noise threshold) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_u64_u64_v2 measurements: instructions: 1227062933 (regressed by 3.84%) node_load_v2: 366608916 (0.52%) (change within noise threshold) node_save_v2: 543163993 (regressed by 7.81%) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_u64_blob_8 measurements: instructions: 1072102455 (-0.07%) (change within noise threshold) node_load_v1: 313757215 (0.00%) (no change) node_save_v1: 457512144 (-0.04%) (change within noise threshold) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_u64_blob_8_v2 measurements: instructions: 1186857459 (regressed by 5.17%) node_load_v2: 364726642 (0.50%) (change within noise threshold) node_save_v2: 517296661 (regressed by 11.50%) stable_memory_size: 8 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_u64 measurements: instructions: 903169486 (-0.07%) (change within noise threshold) node_load_v1: 318747944 (0.00%) (no change) node_save_v1: 301798231 (-0.13%) (change within noise threshold) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: btreemap_remove_blob_8_u64_v2 measurements: instructions: 1066956998 (regressed by 2.69%) node_load_v2: 399537975 (0.60%) (change within noise threshold) node_save_v2: 382247298 (regressed by 5.77%) stable_memory_size: 7 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_insert_blob_4 measurements: instructions: 5187495 (0.00%) (no change) stable_memory_size: 1 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_insert_blob_8 measurements: instructions: 5216814 (0.00%) (no change) stable_memory_size: 2 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_insert_blob_16 measurements: instructions: 5186050 (0.00%) (no change) stable_memory_size: 3 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_insert_blob_32 measurements: instructions: 5394984 (0.00%) (no change) stable_memory_size: 6 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_insert_blob_128 measurements: instructions: 6109513 (0.00%) (no change) stable_memory_size: 20 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_insert_u64 measurements: instructions: 12149357 (0.00%) (no change) stable_memory_size: 2 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_get_blob_4 measurements: instructions: 10027133 (0.00%) (no change) stable_memory_size: 1 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_get_blob_8 measurements: instructions: 11988806 (0.00%) (no change) stable_memory_size: 2 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_get_blob_16 measurements: instructions: 14914959 (0.00%) (no change) stable_memory_size: 3 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_get_blob_32 measurements: instructions: 15584015 (0.00%) (no change) stable_memory_size: 6 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_get_blob_128 measurements: instructions: 25331980 (0.00%) (no change) stable_memory_size: 20 (0.00%) (no change) --------------------------------------------------- Benchmark: vec_get_u64 measurements: instructions: 11430290 (0.00%) (no change) stable_memory_size: 2 (0.00%) (no change) Successfully persisted results to results.yml ```
Configuration menu - View commit details
-
Copy full SHA for add7c67 - Browse repository at this point
Copy the full SHA add7c67View commit details
Commits on Sep 20, 2023
-
refactor: determine node version automatically on load (#133)
Prior to this commit, the caller of `Node::load` needed to specify the node version that will be loaded. This is acceptable if all nodes have the same version, but given that a BTreeMap may have different versions of nodes (migration will be introduced in subsequent commits), this needs to change such that the node's version is detected on load.
Configuration menu - View commit details
-
Copy full SHA for 2d1076c - Browse repository at this point
Copy the full SHA 2d1076cView commit details
Commits on Sep 21, 2023
-
feat: add additional assertions to the
Storable
trait. (#136)This commit adds a new method, to_bytes_checked, to the Storable trait. It includes assertions to detect if the Storable implementation of an element is buggy. This addresses the issue in #125, where a user had a mistake in their implementation of Storable, but it wasn't clear from the error that this was the case. BTreeMap has been updated to use to_bytes_checked rather than to_bytes.
Configuration menu - View commit details
-
Copy full SHA for 48866e6 - Browse repository at this point
Copy the full SHA 48866e6View commit details -
feat: make BTreeMap V2 the default and automatically migrate V1 maps. (…
…#135) Prior to this commit, initializing a BTreeMap initialized a V1 BTreeMap by default, and only by using `new_v2` and `init_v2` can developers explicitly opt-in to using V2 BTreeMaps. This commit updates the interface such that a BTreeMap is initialized as a V2 BTreeMap by default, and v1 BTreeMaps are automatically migrated to V2. Developers can still opt-in to using V1 by using `new_v1` and `init_v1`.
Configuration menu - View commit details
-
Copy full SHA for 16ea7ab - Browse repository at this point
Copy the full SHA 16ea7abView commit details -
feat: expose helper methods for extracting bounds (#138)
Exposes some helper methods that are useful for developers. I found these useful as I was migrating the Bitcoin Canister to BTreeMap V2.
Configuration menu - View commit details
-
Copy full SHA for b5f8ed0 - Browse repository at this point
Copy the full SHA b5f8ed0View commit details -
refactor: rewrite BTreeMap proptests using
test_strategy
. (#139)Uses the `test_strategy` crate in declaring the proptests. The main advantage of this crate is that code formatting continues to work. With the traditional proptest macro formatting doesn't work anymore.
Configuration menu - View commit details
-
Copy full SHA for ae08d63 - Browse repository at this point
Copy the full SHA ae08d63View commit details -
chore: new beta release (#137)
Updates the beta release to include performance enhancements + making BTreeMap V2 the default.
Configuration menu - View commit details
-
Copy full SHA for f0f716a - Browse repository at this point
Copy the full SHA f0f716aView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.6.0-beta.0...v0.6.0-beta.1