Benchmarks¶
The following benchamrks where generated by running tox -c tox_benchmarks.ini.
See test_bench.py
for the actual benchmarking code.
See Benchman for details about the benchmarking tool.
General Benchmarks¶
Client: arm64_16_GB, Darwin_24.1.0
Name |
Variant |
Python |
Minimum time |
maxOPS |
Std Dev (σ) |
|---|---|---|---|---|---|
access node.data |
node._data (attr) |
3.9.20 |
29 ns |
34.911 M |
1 ns |
access node.data |
node._data (attr) |
3.10.15 |
29 ns |
34.012 M |
1 ns |
access node.data |
node._data (attr) |
3.11.10 |
22 ns |
44.912 M |
0 ns |
access node.data |
node._data (attr) |
3.12.6 |
9 ns |
116.281 M |
0 ns |
access node.data |
node._data (attr) |
3.13.0rc3+ |
7 ns |
134.332 M |
0 ns |
access node.data |
node.data (property) |
3.9.20 |
75 ns |
13.334 M |
0 ns |
access node.data |
node.data (property) |
3.10.15 |
79 ns |
12.616 M |
0 ns |
access node.data |
node.data (property) |
3.11.10 |
56 ns |
17.833 M |
0 ns |
access node.data |
node.data (property) |
3.12.6 |
52 ns |
19.222 M |
0 ns |
access node.data |
node.data (property) |
3.13.0rc3+ |
49 ns |
20.374 M |
0 ns |
iterate |
for _ in tree.iterator(): … |
3.9.20 |
2,639 ns |
0.379 M |
12 ns |
iterate |
for _ in tree.iterator(): … |
3.10.15 |
2,563 ns |
0.390 M |
6 ns |
iterate |
for _ in tree.iterator(): … |
3.11.10 |
2,138 ns |
0.468 M |
223 ns |
iterate |
for _ in tree.iterator(): … |
3.12.6 |
1,666 ns |
0.600 M |
53 ns |
iterate |
for _ in tree.iterator(): … |
3.13.0rc3+ |
1,508 ns |
0.663 M |
6 ns |
iterate |
for _ in tree.iterator(LEVEL_ORDER): … |
3.9.20 |
1,776 ns |
0.563 M |
6 ns |
iterate |
for _ in tree.iterator(LEVEL_ORDER): … |
3.10.15 |
1,908 ns |
0.524 M |
9 ns |
iterate |
for _ in tree.iterator(LEVEL_ORDER): … |
3.11.10 |
1,552 ns |
0.644 M |
4 ns |
iterate |
for _ in tree.iterator(LEVEL_ORDER): … |
3.12.6 |
1,309 ns |
0.764 M |
4 ns |
iterate |
for _ in tree.iterator(LEVEL_ORDER): … |
3.13.0rc3+ |
1,222 ns |
0.818 M |
3 ns |
iterate |
for _ in tree.iterator(POST_ORDER): … |
3.9.20 |
3,201 ns |
0.312 M |
7 ns |
iterate |
for _ in tree.iterator(POST_ORDER): … |
3.10.15 |
3,134 ns |
0.319 M |
6 ns |
iterate |
for _ in tree.iterator(POST_ORDER): … |
3.11.10 |
2,667 ns |
0.375 M |
10 ns |
iterate |
for _ in tree.iterator(POST_ORDER): … |
3.12.6 |
2,292 ns |
0.436 M |
7 ns |
iterate |
for _ in tree.iterator(POST_ORDER): … |
3.13.0rc3+ |
2,088 ns |
0.479 M |
87 ns |
iterate |
for _ in tree.iterator(PRE_ORDER): … |
3.9.20 |
2,696 ns |
0.371 M |
93 ns |
iterate |
for _ in tree.iterator(PRE_ORDER): … |
3.10.15 |
2,566 ns |
0.390 M |
5 ns |
iterate |
for _ in tree.iterator(PRE_ORDER): … |
3.11.10 |
2,109 ns |
0.474 M |
92 ns |
iterate |
for _ in tree.iterator(PRE_ORDER): … |
3.12.6 |
1,690 ns |
0.592 M |
47 ns |
iterate |
for _ in tree.iterator(PRE_ORDER): … |
3.13.0rc3+ |
1,498 ns |
0.668 M |
7 ns |
iterate |
for _ in tree.iterator(RANDOM_ORDER): … |
3.9.20 |
2,561 ns |
0.390 M |
96 ns |
iterate |
for _ in tree.iterator(RANDOM_ORDER): … |
3.10.15 |
2,556 ns |
0.391 M |
12 ns |
iterate |
for _ in tree.iterator(RANDOM_ORDER): … |
3.11.10 |
1,766 ns |
0.566 M |
46 ns |
iterate |
for _ in tree.iterator(RANDOM_ORDER): … |
3.12.6 |
1,825 ns |
0.548 M |
43 ns |
iterate |
for _ in tree.iterator(RANDOM_ORDER): … |
3.13.0rc3+ |
1,728 ns |
0.579 M |
7 ns |
iterate |
for _ in tree.iterator(UNORDERED): … |
3.9.20 |
491 ns |
2.035 M |
4 ns |
iterate |
for _ in tree.iterator(UNORDERED): … |
3.10.15 |
492 ns |
2.032 M |
4 ns |
iterate |
for _ in tree.iterator(UNORDERED): … |
3.11.10 |
394 ns |
2.538 M |
0 ns |
iterate |
for _ in tree.iterator(UNORDERED): … |
3.12.6 |
398 ns |
2.510 M |
3 ns |
iterate |
for _ in tree.iterator(UNORDERED): … |
3.13.0rc3+ |
336 ns |
2.977 M |
1 ns |
iterate |
for _ in tree: … |
3.9.20 |
2,652 ns |
0.377 M |
21 ns |
iterate |
for _ in tree: … |
3.10.15 |
2,554 ns |
0.392 M |
233 ns |
iterate |
for _ in tree: … |
3.11.10 |
2,157 ns |
0.464 M |
4 ns |
iterate |
for _ in tree: … |
3.12.6 |
1,687 ns |
0.593 M |
18 ns |
iterate |
for _ in tree: … |
3.13.0rc3+ |
1,527 ns |
0.655 M |
107 ns |
iterate |
tree.visit(lambda node, memo: None) |
3.9.20 |
2,532 ns |
0.395 M |
85 ns |
iterate |
tree.visit(lambda node, memo: None) |
3.10.15 |
2,595 ns |
0.385 M |
88 ns |
iterate |
tree.visit(lambda node, memo: None) |
3.11.10 |
1,998 ns |
0.501 M |
7 ns |
iterate |
tree.visit(lambda node, memo: None) |
3.12.6 |
1,513 ns |
0.661 M |
38 ns |
iterate |
tree.visit(lambda node, memo: None) |
3.13.0rc3+ |
1,383 ns |
0.723 M |
42 ns |
search |
by index |
3.9.20 |
516 ns |
1.937 M |
48 ns |
search |
by index |
3.10.15 |
487 ns |
2.052 M |
31 ns |
search |
by index |
3.11.10 |
287 ns |
3.480 M |
27 ns |
search |
by index |
3.12.6 |
342 ns |
2.922 M |
30 ns |
search |
by index |
3.13.0rc3+ |
348 ns |
2.875 M |
30 ns |
search |
find() |
3.9.20 |
274 ns |
3.647 M |
1 ns |
search |
find() |
3.10.15 |
247 ns |
4.053 M |
15 ns |
search |
find() |
3.11.10 |
145 ns |
6.912 M |
8 ns |
search |
find() |
3.12.6 |
151 ns |
6.632 M |
8 ns |
search |
find() |
3.13.0rc3+ |
148 ns |
6.766 M |
7 ns |
search |
find_all() |
3.9.20 |
267 ns |
3.748 M |
10 ns |
search |
find_all() |
3.10.15 |
240 ns |
4.160 M |
12 ns |
search |
find_all() |
3.11.10 |
141 ns |
7.104 M |
5 ns |
search |
find_all() |
3.12.6 |
156 ns |
6.392 M |
5 ns |
search |
find_all() |
3.13.0rc3+ |
148 ns |
6.768 M |
6 ns |
serialize_load |
ZIP_BZIP2 (‘.bz2’) |
3.9.20 |
240 ms |
4.168 |
0 ms |
serialize_load |
ZIP_BZIP2 (‘.bz2’) |
3.10.15 |
208 ms |
4.808 |
0 ms |
serialize_load |
ZIP_BZIP2 (‘.bz2’) |
3.11.10 |
163 ms |
6.129 |
0 ms |
serialize_load |
ZIP_BZIP2 (‘.bz2’) |
3.12.6 |
165 ms |
6.055 |
0 ms |
serialize_load |
ZIP_BZIP2 (‘.bz2’) |
3.13.0rc3+ |
175 ms |
5.722 |
0 ms |
serialize_load |
ZIP_DEFLATED (‘.zip’) |
3.9.20 |
209 ms |
4.785 |
0 ms |
serialize_load |
ZIP_DEFLATED (‘.zip’) |
3.10.15 |
210 ms |
4.770 |
0 ms |
serialize_load |
ZIP_DEFLATED (‘.zip’) |
3.11.10 |
148 ms |
6.756 |
0 ms |
serialize_load |
ZIP_DEFLATED (‘.zip’) |
3.12.6 |
164 ms |
6.102 |
0 ms |
serialize_load |
ZIP_DEFLATED (‘.zip’) |
3.13.0rc3+ |
159 ms |
6.294 |
0 ms |
serialize_load |
ZIP_LZMA (‘.lzma’) |
3.9.20 |
204 ms |
4.907 |
0 ms |
serialize_load |
ZIP_LZMA (‘.lzma’) |
3.10.15 |
208 ms |
4.805 |
0 ms |
serialize_load |
ZIP_LZMA (‘.lzma’) |
3.11.10 |
162 ms |
6.187 |
0 ms |
serialize_load |
ZIP_LZMA (‘.lzma’) |
3.12.6 |
167 ms |
5.975 |
0 ms |
serialize_load |
ZIP_LZMA (‘.lzma’) |
3.13.0rc3+ |
156 ms |
6.424 |
0 ms |
serialize_load |
uncompressed (‘.json’) |
3.9.20 |
203 ms |
4.926 |
0 ms |
serialize_load |
uncompressed (‘.json’) |
3.10.15 |
200 ms |
4.990 |
0 ms |
serialize_load |
uncompressed (‘.json’) |
3.11.10 |
145 ms |
6.902 |
0 ms |
serialize_load |
uncompressed (‘.json’) |
3.12.6 |
171 ms |
5.848 |
0 ms |
serialize_load |
uncompressed (‘.json’) |
3.13.0rc3+ |
149 ms |
6.709 |
0 ms |
serialize_save |
ZIP_BZIP2 (‘.bz2’) |
3.9.20 |
353 ms |
2.835 |
0 ms |
serialize_save |
ZIP_BZIP2 (‘.bz2’) |
3.10.15 |
378 ms |
2.649 |
0 ms |
serialize_save |
ZIP_BZIP2 (‘.bz2’) |
3.11.10 |
320 ms |
3.125 |
0 ms |
serialize_save |
ZIP_BZIP2 (‘.bz2’) |
3.12.6 |
325 ms |
3.081 |
0 ms |
serialize_save |
ZIP_BZIP2 (‘.bz2’) |
3.13.0rc3+ |
281 ms |
3.558 |
0 ms |
serialize_save |
ZIP_DEFLATED (‘.zip’) |
3.9.20 |
333 ms |
3.000 |
0 ms |
serialize_save |
ZIP_DEFLATED (‘.zip’) |
3.10.15 |
344 ms |
2.907 |
0 ms |
serialize_save |
ZIP_DEFLATED (‘.zip’) |
3.11.10 |
286 ms |
3.498 |
0 ms |
serialize_save |
ZIP_DEFLATED (‘.zip’) |
3.12.6 |
268 ms |
3.738 |
0 ms |
serialize_save |
ZIP_DEFLATED (‘.zip’) |
3.13.0rc3+ |
244 ms |
4.091 |
0 ms |
serialize_save |
ZIP_LZMA (‘.lzma’) |
3.9.20 |
626 ms |
1.597 |
0 ms |
serialize_save |
ZIP_LZMA (‘.lzma’) |
3.10.15 |
660 ms |
1.515 |
0 ms |
serialize_save |
ZIP_LZMA (‘.lzma’) |
3.11.10 |
593 ms |
1.685 |
0 ms |
serialize_save |
ZIP_LZMA (‘.lzma’) |
3.12.6 |
566 ms |
1.766 |
0 ms |
serialize_save |
ZIP_LZMA (‘.lzma’) |
3.13.0rc3+ |
568 ms |
1.762 |
0 ms |
serialize_save |
uncompressed (‘.json’) |
3.9.20 |
293 ms |
3.410 |
0 ms |
serialize_save |
uncompressed (‘.json’) |
3.10.15 |
305 ms |
3.274 |
0 ms |
serialize_save |
uncompressed (‘.json’) |
3.11.10 |
272 ms |
3.671 |
0 ms |
serialize_save |
uncompressed (‘.json’) |
3.12.6 |
230 ms |
4.352 |
0 ms |
serialize_save |
uncompressed (‘.json’) |
3.13.0rc3+ |
215 ms |
4.660 |
0 ms |
Benchmark date: 2024-12-27T21:32:29.559992+00:00 Fixed dataset values: client=‘61bdee7c56e0e5f7’, debug_mode=False, hardware=‘arm64_16_GB’, project=‘nutree’, system=‘Darwin_24.1.0’, tag=‘latest’, version=‘0.11.2a1’. Variant dataset values: name, python, sample_size, variant. Showing 105 rows. Sort order: name, variant, python.
Ops by python¶
Client: arm64_16_GB, Darwin_24.1.0
Name |
Variant |
3.9.20 |
3.10.15 |
3.11.10 |
3.12.6 |
3.13.0rc3+ |
|---|---|---|---|---|---|---|
access node.data |
node._data (attr) |
34.911 M |
34.012 M |
44.912 M |
116.281 M |
134.332 M |
access node.data |
node.data (property) |
13.334 M |
12.616 M |
17.833 M |
19.222 M |
20.374 M |
iterate |
for _ in tree: … |
0.377 M |
0.392 M |
0.464 M |
0.593 M |
0.655 M |
iterate |
for _ in tree.iterator(UNORDERED): … |
2.035 M |
2.032 M |
2.538 M |
2.510 M |
2.977 M |
iterate |
for _ in tree.iterator(POST_ORDER): … |
0.312 M |
0.319 M |
0.375 M |
0.436 M |
0.479 M |
iterate |
for _ in tree.iterator(RANDOM_ORDER): … |
0.390 M |
0.391 M |
0.566 M |
0.548 M |
0.579 M |
iterate |
tree.visit(lambda node, memo: None) |
0.395 M |
0.385 M |
0.501 M |
0.661 M |
0.723 M |
iterate |
for _ in tree.iterator(LEVEL_ORDER): … |
0.563 M |
0.524 M |
0.644 M |
0.764 M |
0.818 M |
iterate |
for _ in tree.iterator(PRE_ORDER): … |
0.371 M |
0.390 M |
0.474 M |
0.592 M |
0.668 M |
iterate |
for _ in tree.iterator(): … |
0.379 M |
0.390 M |
0.468 M |
0.600 M |
0.663 M |
search |
find_all() |
3.748 M |
4.160 M |
7.104 M |
6.392 M |
6.768 M |
search |
find() |
3.647 M |
4.053 M |
6.912 M |
6.632 M |
6.766 M |
search |
by index |
1.937 M |
2.052 M |
3.480 M |
2.922 M |
2.875 M |
serialize_load |
ZIP_LZMA (‘.lzma’) |
4.907 |
4.805 |
6.187 |
5.975 |
6.424 |
serialize_load |
uncompressed (‘.json’) |
4.926 |
4.990 |
6.902 |
5.848 |
6.709 |
serialize_load |
ZIP_DEFLATED (‘.zip’) |
4.785 |
4.770 |
6.756 |
6.102 |
6.294 |
serialize_load |
ZIP_BZIP2 (‘.bz2’) |
4.168 |
4.808 |
6.129 |
6.055 |
5.722 |
serialize_save |
ZIP_BZIP2 (‘.bz2’) |
2.835 |
2.649 |
3.125 |
3.081 |
3.558 |
serialize_save |
ZIP_DEFLATED (‘.zip’) |
3.000 |
2.907 |
3.498 |
3.738 |
4.091 |
serialize_save |
uncompressed (‘.json’) |
3.410 |
3.274 |
3.671 |
4.352 |
4.660 |
serialize_save |
ZIP_LZMA (‘.lzma’) |
1.597 |
1.515 |
1.685 |
1.766 |
1.762 |
Benchmark date: 2024-12-27T21:32:29.559992+00:00 Fixed dataset values: client=‘61bdee7c56e0e5f7’, debug_mode=False, hardware=‘arm64_16_GB’, project=‘nutree’, system=‘Darwin_24.1.0’, tag=‘latest’, version=‘0.11.2a1’. Variant dataset values: name, python, sample_size, variant. : Showing 21 of 105 rows. Sort order: name.