From ddac99ab9bf58d8cc43133137fff7639da5ede2d Mon Sep 17 00:00:00 2001 From: AmuroEita <1071307515@qq.com> Date: Thu, 8 Oct 2026 02:05:26 +0800 Subject: [PATCH 1/4] feat(runtime): reuse codec allocations and execution keys --- .../20261008-current-python/README.md | 114 ++++ .../results/medians-ms.json | 92 +++ .../results/metadata.json | 144 ++++ .../results/samples.csv | 631 ++++++++++++++++++ .../20261008-current-python/run.py | 130 ++++ runtime/src/kvcpu.c | 4 + runtime/src/runtime_internal.h | 2 + runtime/src/vthread.c | 16 +- runtime/src/xvalue.c | 27 +- 9 files changed, 1133 insertions(+), 27 deletions(-) create mode 100644 bench/experiments/20261008-current-python/README.md create mode 100644 bench/experiments/20261008-current-python/results/medians-ms.json create mode 100644 bench/experiments/20261008-current-python/results/metadata.json create mode 100644 bench/experiments/20261008-current-python/results/samples.csv create mode 100644 bench/experiments/20261008-current-python/run.py diff --git a/bench/experiments/20261008-current-python/README.md b/bench/experiments/20261008-current-python/README.md new file mode 100644 index 00000000..aa4a9d63 --- /dev/null +++ b/bench/experiments/20261008-current-python/README.md @@ -0,0 +1,114 @@ +# Current interpreter versus Python + +Nine alternating runs per variant on each repository benchmark's largest frozen +scale. All 630 samples have identical functional output within each case. +Results are medians of the fixtures' `__bench_ns` interval in milliseconds; +process startup, layout loading and store setup are excluded. `samples.csv` +also records wall time. Each interpreter sample starts with a fresh SHM store. + +Environment: Intel Xeon Gold 6418H, CPU 24 affinity, GCC 14.3.0, +`-O3 -g -DNDEBUG`, CPython 3.10.12, `LOG_LEVEL=warn`. + +## Isolated variants + +The runtime baseline is kvlang `774e5315eff9ec39caa1cd6e9791620811845a9d`. +The backend baseline is kvspace-c `0e5660c37d5584fe774b1c75d71eca3777115671`. +Both interpreters use the same CLI, layout library and kvspace v0.3.0 frontend. +Blockmalloc is v0.1.4. The allocator baseline is slotsboxmalloc v0.1.5 +(header identical to main `e2c4c6bf67648a7c200d0354ff25e5f65c417a00`). + +| Variant | Runtime | SHM write path | Allocator | +|---|---|---|---| +| main | baseline | baseline | v0.1.5 | +| runtime | this patch | baseline | v0.1.5 | +| backend | baseline | existing-value write patch | v0.1.5 | +| combined | this patch | existing-value write patch | v0.1.5 | +| allocator | baseline | baseline | bitmap allocation patch | +| all | this patch | existing-value write patch | bitmap allocation patch | +| python | stock case | — | — | + +The bitmap patch replaces the reverse slot scan with word operations and rejects +requests exceeding a leaf's `max_obj_cap`. It retains the v0.1.5 pool format and +slot selection. The separate, previously submitted slotsboxmalloc PR #9 capacity +initialization fix is absent from every measured variant. The earlier kvspace-c +direct-child listing PR #39 is also absent. + +## Results + +These combined results require all three source patches; they are not the gain +from the runtime patch alone. Runtime-only medians range from 0.97x to 1.07x +baseline speed, including a 3.1% slower iops median. The larger improvements +come from the separately isolated write and allocator patches. + +| Case | Scale | Main ms | All patches ms | Speedup | Python ms | +|---|---:|---:|---:|---:|---:| +| iops | 2000 | 33.231 | 26.754 | 1.24x | 0.094775 | +| prime_sieve | 100 | 43.125 | 33.189 | 1.30x | 0.078565 | +| fib | 10 | 116.614 | 39.435 | 2.96x | 0.019457 | +| nqueens | 6 | 319.365 | 103.438 | 3.09x | 0.080029 | +| quicksort | 128 | 50.026 | 38.346 | 1.30x | 0.089687 | +| binary_search | 64 | 141.625 | 53.834 | 2.63x | 0.048057 | +| binary_trees | 6 | 27.805 | 16.576 | 1.68x | 0.036597 | +| hash_table | 200 | 21.035 | 13.794 | 1.52x | 0.090475 | +| matmul | 8 | 21.447 | 16.185 | 1.33x | 0.092590 | +| k_nucleotide | 8 | 33.396 | 27.585 | 1.21x | 0.071613 | + +The optimized interpreter remains 152–2027x slower than Python at these scales. +These are SHM results, not FS/Redis performance measurements. The dependency +manifest still pins slotsboxmalloc v0.1.5: consuming the bitmap gain requires +building the backend with the patched header, then a dependency release/update. + +## Reproduce + +Build each backend with the same flags and blockmalloc header. Put the allocator +include path first for the `allocator` and `all` variants: + +```sh +cmake -S "$BACKEND_SOURCE" -B "$BACKEND_BUILD" \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo -DKVSPACE_BUILD_TESTS=ON \ + -DCMAKE_C_FLAGS_RELWITHDEBINFO='-O3 -g -DNDEBUG' \ + -DCMAKE_C_FLAGS="-I$ALLOCATOR_SOURCE/include -I$ABI_PREFIX/include" +cmake --build "$BACKEND_BUILD" -j + +cmake -S "$KVLANG_SOURCE/runtime" -B "$RUNTIME_BUILD" \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_C_FLAGS_RELWITHDEBINFO='-O3 -g -DNDEBUG' \ + -DKVSPACE_LIB_DIR="$ABI_PREFIX/lib/kvspace" +cmake --build "$RUNTIME_BUILD" -j +``` + +The checked snapshot used these paths (their actual loaded libraries and hashes +are recorded in `results/metadata.json`): + +```sh +python3 bench/experiments/20261008-current-python/run.py \ + --baseline /tmp/kvlang-perf-current-baseline/bin/kvlang \ + --candidate /tmp/kvlang-perf-current/bin/kvlang \ + --baseline-backend /tmp/kvlang-perf-experiment/backend-main \ + --candidate-backend /tmp/kvspace-c-perf-write-build \ + --allocator-backend /tmp/kvspace-c-perf-leaf-build \ + --all-backend /tmp/kvspace-c-perf-total-build \ + --cpu 24 --pairs 9 --output results +``` + +`run.py` reuses the stock sweep and parser, substitutes only `__SCALE__`, rejects +failed or missing-time samples, checks every functional output against the other +variants and Python, and records source and loaded-library hashes. + +## Validation + +- Runtime CTest: 9/9 with the pinned backend and with all patches. +- SHM backend CTest: 6/6 for write-only, allocator-only and all patches. +- Candidate tutorials: SHM and FS each 222 passed, 0 failed, 1 skipped. +- Independent execution probes: external PC/value/status changes on cache hits, + key fallback and write failures, worker exit/resume, codec bytes and ownership. +- All 30 frozen stock scale points pass with both pinned and combined SHM backends. +- Independent allocator oracle: 15,219,555 bitmap cases, 240,000 fragmented + alloc/free operations, cross-address v0.1.5 pool handover, concurrent data + integrity and persisted backend reopen checks. + +Runtime's normal-length probes and all nine CTests pass ASan/UBSan. A separate +700-byte-ID probe reproduces an existing frame-key fallback leak on baseline +and candidate. Backend sanitizer comparison disables inherited unaligned ART +access checks; its independent write harness passes, while the full suite retains +the baseline `art_scan` leak. These limits are not full sanitizer-clean claims. diff --git a/bench/experiments/20261008-current-python/results/medians-ms.json b/bench/experiments/20261008-current-python/results/medians-ms.json new file mode 100644 index 00000000..9adac787 --- /dev/null +++ b/bench/experiments/20261008-current-python/results/medians-ms.json @@ -0,0 +1,92 @@ +{ + "iops": { + "main": 33.230698, + "runtime": 34.249536, + "backend": 29.299886, + "combined": 27.683865, + "allocator": 33.217073, + "all": 26.754023, + "python": 0.094775 + }, + "prime_sieve": { + "main": 43.124912, + "runtime": 40.354541, + "backend": 34.861587, + "combined": 34.631411, + "allocator": 41.596825, + "all": 33.188722, + "python": 0.078565 + }, + "fib": { + "main": 116.614486, + "runtime": 117.200918, + "backend": 116.315874, + "combined": 115.574115, + "allocator": 41.433727, + "all": 39.435195, + "python": 0.019457 + }, + "nqueens": { + "main": 319.365155, + "runtime": 316.669465, + "backend": 314.260717, + "combined": 313.492908, + "allocator": 108.160385, + "all": 103.437525, + "python": 0.080029 + }, + "quicksort": { + "main": 50.026257, + "runtime": 48.435898, + "backend": 42.536906, + "combined": 41.607775, + "allocator": 47.376373, + "all": 38.34567, + "python": 0.089687 + }, + "binary_search": { + "main": 141.625351, + "runtime": 140.764034, + "backend": 137.777669, + "combined": 136.834907, + "allocator": 59.21245, + "all": 53.83428, + "python": 0.048057 + }, + "binary_trees": { + "main": 27.805124, + "runtime": 27.389447, + "backend": 24.894097, + "combined": 24.337998, + "allocator": 20.466159, + "all": 16.575519, + "python": 0.036597 + }, + "hash_table": { + "main": 21.035234, + "runtime": 20.501664, + "backend": 18.208816, + "combined": 17.612647, + "allocator": 17.221449, + "all": 13.793723, + "python": 0.090475 + }, + "matmul": { + "main": 21.446574, + "runtime": 20.88364, + "backend": 18.069819, + "combined": 17.603285, + "allocator": 20.361865, + "all": 16.184711, + "python": 0.09259 + }, + "k_nucleotide": { + "main": 33.396298, + "runtime": 33.060279, + "backend": 28.868662, + "combined": 28.413805, + "allocator": 32.910521, + "all": 27.585147, + "python": 0.071613 + } +} diff --git a/bench/experiments/20261008-current-python/results/metadata.json b/bench/experiments/20261008-current-python/results/metadata.json new file mode 100644 index 00000000..5608ab68 --- /dev/null +++ b/bench/experiments/20261008-current-python/results/metadata.json @@ -0,0 +1,144 @@ +{ + "cpu": 24, + "pairs": 9, + "python": "3.10.12", + "cpu_model": "Intel(R) Xeon(R) Gold 6418H", + "variants": { + "main": { + "binary": "/tmp/kvlang-perf-current-baseline/bin/kvlang", + "backend_path": "/tmp/kvlang-perf-experiment/backend-main", + "binary_sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "libraries": { + "/tmp/kvlang-perf-deps/prefix/lib/kvspace/libkvspace.so.1": "b6230a008bfbc2326797c361f589f35b8129f32522bc6fe55a1808fbae42aa73", + "/tmp/kvlang-perf-current-baseline/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvlang-perf-current-baseline/bin/libkvlang_runtime.so": "abea1bd6c985a70b648ce55c04de6fc1c3d7220b40c7e7bf19c5730e6eea3faa", + "/tmp/kvlang-perf-experiment/backend-main/libkvspace-c.so.1": "a6a8d894675173fc6c005bd29b45e857d0da16f4a40c50cd669f4e39416e91bf" + } + }, + "runtime": { + "binary": "/tmp/kvlang-perf-current/bin/kvlang", + "backend_path": "/tmp/kvlang-perf-experiment/backend-main", + "binary_sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "libraries": { + "/tmp/kvlang-perf-deps/prefix/lib/kvspace/libkvspace.so.1": "b6230a008bfbc2326797c361f589f35b8129f32522bc6fe55a1808fbae42aa73", + "/tmp/kvlang-perf-current/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvlang-perf-current/bin/libkvlang_runtime.so": "77134092e1713357b88aa04db2d5a4b8470ae0cbdc79e7ae39f909b2869d73c9", + "/tmp/kvlang-perf-experiment/backend-main/libkvspace-c.so.1": "a6a8d894675173fc6c005bd29b45e857d0da16f4a40c50cd669f4e39416e91bf" + } + }, + "backend": { + "binary": "/tmp/kvlang-perf-current-baseline/bin/kvlang", + "backend_path": "/tmp/kvspace-c-perf-write-build", + "binary_sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "libraries": { + "/tmp/kvlang-perf-deps/prefix/lib/kvspace/libkvspace.so.1": "b6230a008bfbc2326797c361f589f35b8129f32522bc6fe55a1808fbae42aa73", + "/tmp/kvlang-perf-current-baseline/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvlang-perf-current-baseline/bin/libkvlang_runtime.so": "abea1bd6c985a70b648ce55c04de6fc1c3d7220b40c7e7bf19c5730e6eea3faa", + "/tmp/kvspace-c-perf-write-build/libkvspace-c.so.1": "dfa5fd3b3ef9a8393fb7bb142767e592c979276c23a2cf7ce65bc1dee5abf65a" + } + }, + "combined": { + "binary": "/tmp/kvlang-perf-current/bin/kvlang", + "backend_path": "/tmp/kvspace-c-perf-write-build", + "binary_sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "libraries": { + "/tmp/kvlang-perf-deps/prefix/lib/kvspace/libkvspace.so.1": "b6230a008bfbc2326797c361f589f35b8129f32522bc6fe55a1808fbae42aa73", + "/tmp/kvlang-perf-current/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvlang-perf-current/bin/libkvlang_runtime.so": "77134092e1713357b88aa04db2d5a4b8470ae0cbdc79e7ae39f909b2869d73c9", + "/tmp/kvspace-c-perf-write-build/libkvspace-c.so.1": "dfa5fd3b3ef9a8393fb7bb142767e592c979276c23a2cf7ce65bc1dee5abf65a" + } + }, + "allocator": { + "binary": "/tmp/kvlang-perf-current-baseline/bin/kvlang", + "backend_path": "/tmp/kvspace-c-perf-leaf-build", + "binary_sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "libraries": { + "/tmp/kvlang-perf-deps/prefix/lib/kvspace/libkvspace.so.1": "b6230a008bfbc2326797c361f589f35b8129f32522bc6fe55a1808fbae42aa73", + "/tmp/kvlang-perf-current-baseline/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvlang-perf-current-baseline/bin/libkvlang_runtime.so": "abea1bd6c985a70b648ce55c04de6fc1c3d7220b40c7e7bf19c5730e6eea3faa", + "/tmp/kvspace-c-perf-leaf-build/libkvspace-c.so.1": "9f3b419a89a5021c8a2a01dfc27ba3f6c792e58940b0e79272278d77fa8a0869" + } + }, + "all": { + "binary": "/tmp/kvlang-perf-current/bin/kvlang", + "backend_path": "/tmp/kvspace-c-perf-total-build", + "binary_sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "libraries": { + "/tmp/kvlang-perf-deps/prefix/lib/kvspace/libkvspace.so.1": "b6230a008bfbc2326797c361f589f35b8129f32522bc6fe55a1808fbae42aa73", + "/tmp/kvlang-perf-current/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvlang-perf-current/bin/libkvlang_runtime.so": "77134092e1713357b88aa04db2d5a4b8470ae0cbdc79e7ae39f909b2869d73c9", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + } + } + }, + "sources": { + "iops": { + "scale": 2000, + "kv_sha256": "360d3a2b7bd4d014255ba34cd86f6c72ee72a46b4787ed248ee5a6db96887dd7", + "python_sha256": "e53ef1d628cf1b39be8e2ee2e7ee04a9e0517403226e5f8f18ada9a44ce12d04" + }, + "prime_sieve": { + "scale": 100, + "kv_sha256": "e0dd66398f3027ccd02ea9615089e57693840c037e4674f492f46c4cd6aae346", + "python_sha256": "7365d00a931b3332c68021f14646d651cabbb208c0a2dd6cdd5635bed9475af9" + }, + "fib": { + "scale": 10, + "kv_sha256": "f9f308e2939ecd712442586ee87b8340f55331e75bcd6a6c6ffc12aea3a7bab4", + "python_sha256": "63a329cd3bbc9271f9142f9fa762b3389c17525679763a14e21a7138e12987fa" + }, + "nqueens": { + "scale": 6, + "kv_sha256": "e4ba6073d1cd9e76949e3b81b46604e28b97e712afd6f6158db811f7e97c169b", + "python_sha256": "61ebaeccf79bf06a85e213180930552748cca126ec60b8636a7ed7849765a8af" + }, + "quicksort": { + "scale": 128, + "kv_sha256": "7e50702ad83e4a9e4e9b9627a92f2a6d22abe3219f830bb17320a6bc400f7f16", + "python_sha256": "048c1991bb5e6f528fbacfa8167abe5d860a71117142e736613ced91b8a1a92d" + }, + "binary_search": { + "scale": 64, + "kv_sha256": "42e05e05ccbbdb4af0e5b175ad4f87a367d00a97ddcd4ae0ff4d25edfc7ac153", + "python_sha256": "64e43b7a2a8b0fd928bb93cc8b57cd3f5fd45daf97f46ea269090a395ac6e6dc" + }, + "binary_trees": { + "scale": 6, + "kv_sha256": "39add5228fab5953224b0959b0b8b176586a866179608909390108189f6b46d8", + "python_sha256": "454f14208f826ef084a593953b6780ab29f94f5d565e8b55d5a322f037323b13" + }, + "hash_table": { + "scale": 200, + "kv_sha256": "606feac126238d1908a787ba46f1a7a8d4fd2858cf6a69e327c2acc2f6605541", + "python_sha256": "b19fbe72320375471e91ad31093b37b385f8ef5be46a29465381bac05391ced0" + }, + "matmul": { + "scale": 8, + "kv_sha256": "ba5437bb1dc4f702073fc8c9c8519b28ee502cb27b51d1e5ba09b69262d1ac89", + "python_sha256": "103b272337bff44df02001a52dea61d6c9db8e843245dbc869afe673203764f8" + }, + "k_nucleotide": { + "scale": 8, + "kv_sha256": "9d4cc69ee5455b0902f47b7b6a2e60bbd6d3432084b6e15c252ecbbfbcd5a694", + "python_sha256": "c35d8d9fe4cb2be7065befed69a1c763a7d3ab6e5c569857249b21bbf8a8a6ec" + } + }, + "build": { + "compiler": "GCC 14.3.0", + "c_flags": "-O3 -g -DNDEBUG", + "runtime_base": "774e5315eff9ec39caa1cd6e9791620811845a9d", + "backend_base": "0e5660c37d5584fe774b1c75d71eca3777115671", + "allocator_base": "e2c4c6bf67648a7c200d0354ff25e5f65c417a00", + "allocator_baseline_version": "v0.1.5", + "blockmalloc": "v0.1.4", + "frontend": "kvspace v0.3.0 release", + "candidate_source_sha256": { + "runtime/src/xvalue.c": "d2f24c94c99b1a317657ac43c619e4aad5b0e39741cd05b97f331e4ad7b14ff1", + "runtime/src/kvcpu.c": "2fb04432b3e393ef0de94188a0fcf829dc9c4c1c4ae4802a4bbb7a31094b8222", + "runtime/src/vthread.c": "e39840c88d879db821815430e01ccaac9d74788f146419169e5827808b3a3dc2", + "runtime/src/runtime_internal.h": "90095626f698d221e1cf6b2ec9e771417d1e4a28caf4814965c8473017bc1ae0" + }, + "backend_candidate_source_sha256": "6c6d6b93a5c5856616460280d0d8f63dad9539e68d5387ad769aaf2a758e73ab", + "allocator_candidate_header_sha256": "d424a34e0ef92d13d063d6631df7174bb37d6cfd129e3423b97241d0e3f7b14b" + } +} diff --git a/bench/experiments/20261008-current-python/results/samples.csv b/bench/experiments/20261008-current-python/results/samples.csv new file mode 100644 index 00000000..356ad8be --- /dev/null +++ b/bench/experiments/20261008-current-python/results/samples.csv @@ -0,0 +1,631 @@ +case,scale,pair,variant,kernel_ns,wall_ns,output_sha256 +iops,2000,0,main,35403797,284754754,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,runtime,34224104,279618640,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,backend,28490468,279520264,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,combined,25952964,279456755,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,allocator,35059570,135496211,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,all,27094398,128525467,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,python,95483,27305473,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,python,94775,26063274,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,all,27178877,128040637,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,allocator,35457053,132440370,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,combined,27829780,277358243,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,backend,29513602,284498200,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,runtime,34249536,281815167,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,main,32977130,284435245,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,main,33230698,287501527,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,runtime,34531447,284462574,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,backend,29693358,279751648,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,combined,28120803,276683868,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,allocator,35161061,137069908,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,all,26754023,124348893,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,python,94317,27113527,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,python,94552,25370518,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,all,26437444,125265098,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,allocator,32410054,132973975,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,combined,27914371,278836624,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,backend,30608845,277993327,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,runtime,34375422,291714365,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,main,34012152,285977428,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,main,33218046,284950328,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,runtime,32779453,289180848,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,backend,29231196,279761007,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,combined,28045513,276696858,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,allocator,35405826,128844548,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,all,27224704,120655682,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,python,95114,27436590,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,python,94760,26003446,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,all,23566298,120954480,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,allocator,31528752,131432178,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,combined,23995703,274905205,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,backend,29299886,276483182,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,runtime,34665735,283329991,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,main,32845643,281028620,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,main,31508428,285283820,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,runtime,35302193,284780497,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,backend,29751296,276311481,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,combined,27017811,277911710,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,allocator,32589673,131067774,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,all,25120734,121016388,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,python,95039,26353271,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,python,101414,26660131,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,all,27079278,122438501,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,allocator,33217073,129055482,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,combined,27683865,273594920,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,backend,29029419,278470287,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,runtime,31456253,274690573,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,main,34217336,291232313,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,main,35721625,284434179,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,runtime,33374547,282974077,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,backend,26471004,280376809,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,combined,24642279,277520896,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,allocator,31802902,129974748,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,all,23941088,120720826,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,python,94001,27159488,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +prime_sieve,100,0,main,43124912,292807655,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,runtime,39955058,289648720,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,backend,31766809,283326673,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,combined,35205326,283286095,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,allocator,41954003,135974718,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,all,33193707,129738299,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,python,78565,27335434,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,python,80807,26052324,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,all,28549810,128391122,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,allocator,38777748,138922735,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,combined,31600311,283829267,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,backend,35910582,287550242,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,runtime,41071519,291324572,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,main,38346944,287821556,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,main,43432830,300863616,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,runtime,41818069,288059077,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,backend,32225596,282178697,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,combined,30220949,281234888,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,allocator,39862472,139586154,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,all,32754385,129325477,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,python,84208,27241881,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,python,77996,26028782,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,all,33289594,127821741,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,allocator,41644461,138192492,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,combined,32321602,282645186,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,backend,36071596,286426580,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,runtime,42033334,292327479,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,main,42959349,295914361,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,main,43300776,296253381,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,runtime,39470153,292276619,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,backend,36123469,286044111,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,combined,32914668,280416541,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,allocator,40887956,141300741,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,all,32446925,132420967,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,python,78066,27040904,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,python,78116,25914747,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,all,33546046,126095411,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,allocator,41596825,135426583,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,combined,35402496,281626139,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,backend,34861587,284076779,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,runtime,40354541,296861770,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,main,41382942,295053223,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,main,43429398,291952971,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,runtime,39662365,292363189,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,backend,31065844,284691269,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,combined,34907475,281177749,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,allocator,41781633,135679419,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,all,33188722,128159067,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,python,78931,26818087,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,python,77573,26550788,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,all,28992579,128902555,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,allocator,38300532,138995430,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,combined,34631411,280046182,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,backend,36411683,284040116,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,runtime,38667943,286383289,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,main,41894761,295857754,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,main,43849938,301997682,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,runtime,41685374,306746000,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,backend,32758405,292804569,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,combined,35200145,302674451,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,allocator,42183176,145341961,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,all,34004060,139145709,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,python,81490,27114876,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +fib,10,0,main,117098158,382942847,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,runtime,116886871,379220223,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,backend,117950126,381688531,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,combined,115574115,377278966,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,allocator,41150189,143347672,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,all,39575752,139366818,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,python,19213,26901226,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,python,18709,26114532,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,all,39435195,141425988,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,allocator,41815118,144028384,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,combined,115525256,376265000,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,backend,116832772,379729416,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,runtime,117200918,379535723,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,main,116584517,378216042,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,main,116614486,376835378,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,runtime,117417448,380014344,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,backend,116561239,377755955,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,combined,115112211,377407079,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,allocator,41583894,144614694,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,all,39039569,139256836,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,python,19950,27403306,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,python,19607,26081024,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,all,39581314,138466791,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,allocator,41762763,142970797,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,combined,115553461,378269989,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,backend,115495519,373481035,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,runtime,116547786,374298672,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,main,116477357,374692702,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,main,114757323,372456849,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,runtime,116063310,374902688,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,backend,115759661,375692410,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,combined,115728225,375818338,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,allocator,41091543,141280198,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,all,39377712,140148624,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,python,20637,27953275,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,python,19359,26188830,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,all,39512877,140466144,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,allocator,40893877,141150637,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,combined,115706565,375158108,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,backend,115990574,377838598,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,runtime,116817838,379677125,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,main,117435437,379001897,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,main,116339700,378036475,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,runtime,117214052,378131616,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,backend,115659263,377178634,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,combined,114978359,376034344,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,allocator,41433727,142398206,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,all,39417328,140012749,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,python,19814,27287871,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,python,18724,25577693,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,all,39394932,139790298,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,allocator,41446917,142363119,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,combined,117332669,380871179,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,backend,116315874,380299391,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,runtime,117217107,379820422,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,main,117437419,379564111,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,main,118071257,380551340,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,runtime,117919295,380446540,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,backend,117778764,377694570,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,combined,117908307,382563197,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,allocator,41353973,145699427,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,all,40227847,142906930,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,python,19457,27410240,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +nqueens,6,0,main,318259215,584662780,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,runtime,318458527,583870476,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,backend,312726292,581497419,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,combined,315537006,580329505,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,allocator,108667922,212657408,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,all,104503943,206382248,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,python,80707,27448931,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,python,83526,26995113,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,all,103586310,204979987,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,allocator,108008644,210067306,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,combined,312823580,576232894,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,backend,317254867,582565894,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,runtime,320586664,587646110,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,main,322847008,586987621,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,main,320611822,587871327,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,runtime,320121949,585970401,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,backend,314260717,578745043,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,combined,313758361,577605448,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,allocator,107896593,209903184,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,all,103437525,206012686,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,python,80108,27707116,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,python,80029,26640554,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,all,103135929,204327965,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,allocator,109347955,215696635,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,combined,313492908,571781755,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,backend,312692056,577130756,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,runtime,315330361,578707750,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,main,319885064,584063072,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,main,319365155,587110321,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,runtime,316637994,581041553,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,backend,310921861,579318248,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,combined,312350934,577116362,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,allocator,107940559,211671119,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,all,103180756,205470965,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,python,85125,27483820,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,python,78221,25936703,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,all,103200630,204109946,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,allocator,107795934,211131960,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,combined,313827268,577184584,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,backend,315616190,585143430,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,runtime,316577070,580244683,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,main,320131069,584533111,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,main,318215394,582882911,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,runtime,318830070,584992756,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,backend,314745843,578690734,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,combined,313187114,578163984,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,allocator,108160385,210589087,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,all,103409036,205393504,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,python,79886,27519795,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,python,77415,26686553,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,all,103844153,204696886,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,allocator,108586377,210593850,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,combined,308688928,579392330,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,backend,313050965,575995296,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,runtime,316218219,580301702,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,main,317608734,582368130,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,main,317594158,582501646,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,runtime,316669465,580579441,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,backend,316239630,581875818,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,combined,314332368,581153048,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,allocator,108757123,212714526,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,all,103992162,205697928,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,python,78918,27736758,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +quicksort,128,0,main,49876842,327473688,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,runtime,49377206,324810652,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,backend,42707724,318523022,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,combined,40867828,315747688,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,allocator,47847119,157872413,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,all,37857213,146048143,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,python,91234,27670099,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,python,87052,26491277,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,all,38175664,145246261,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,allocator,48026432,157583214,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,combined,41607775,314940338,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,backend,42747584,314824388,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,runtime,48286424,321772607,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,main,50162349,325716712,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,main,50026257,326291254,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,runtime,48490458,323208132,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,backend,43757122,317595016,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,combined,42005255,317714307,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,allocator,47035544,158834162,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,all,38794814,147298307,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,python,89687,27238742,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,python,121665,26148711,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,all,38769244,147706060,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,allocator,47376373,157102684,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,combined,41364921,313850447,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,backend,42196208,318505545,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,runtime,47309748,321434289,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,main,43599483,292152723,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,main,45906610,299585323,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,runtime,49236055,318431894,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,backend,42294720,315169167,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,combined,41127184,313798377,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,allocator,46902974,156422158,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,all,38028850,145301689,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,python,87298,26809135,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,python,88217,26473669,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,all,38345670,145321621,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,allocator,47665345,156943479,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,combined,41761664,316129946,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,backend,42485769,316778976,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,runtime,49232695,325701310,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,main,50094527,326909438,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,main,50128408,325575905,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,runtime,48210715,323126717,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,backend,42536906,316435305,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,combined,41360444,315254704,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,allocator,46873152,157689808,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,all,38297020,137053990,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,python,90559,27361907,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,python,87187,26419219,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,all,39188251,147244673,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,allocator,46669605,155345374,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,combined,41852893,313930075,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,backend,44059857,318137341,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,runtime,48435898,323157376,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,main,49260783,323537206,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,main,50257662,325939689,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,runtime,48413117,324915931,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,backend,42284612,315723519,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,combined,41938160,321046170,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,allocator,47463009,157844631,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,all,38388985,145996892,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,python,89745,27660480,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +binary_search,64,0,main,139844642,408852345,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,runtime,142086125,411725338,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,backend,137497516,404790846,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,combined,136978883,404687500,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,allocator,60068373,165287469,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,all,53870832,158066458,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,python,48500,28185337,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,python,47816,26659088,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,all,53729314,157422660,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,allocator,59125504,164154674,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,combined,137772129,407335062,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,backend,140102763,407935044,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,runtime,142735222,412466821,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,main,122337779,391536476,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,main,141625351,390924374,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,runtime,140877070,409756078,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,backend,137624948,405394480,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,combined,137081916,404075099,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,allocator,58702594,163468478,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,all,53500156,157622165,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,python,47546,27338340,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,python,48186,26335135,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,all,53424792,155708372,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,allocator,58991904,162571801,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,combined,136834907,404397174,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,backend,137664488,405929566,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,runtime,140638744,407914558,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,main,141678408,410238807,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,main,141939464,410021318,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,runtime,140764034,409197429,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,backend,137777669,404772192,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,combined,136771006,405205973,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,allocator,59430466,164386037,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,all,53669571,159288294,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,python,48057,27265578,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,python,47291,26052259,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,all,54016347,157642295,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,allocator,60468520,165811388,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,combined,136812183,407580065,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,backend,139337797,408735100,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,runtime,140404452,411191966,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,main,141427380,410295058,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,main,141372296,407544386,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,runtime,140657045,407938267,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,backend,137583552,403996522,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,combined,136551771,404103107,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,allocator,59212450,164219193,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,all,53834280,157788014,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,python,46562,27934853,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,python,49659,26190282,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,all,54847647,157763049,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,allocator,59406854,164661439,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,combined,138185509,407812719,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,backend,140203033,412317237,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,runtime,142358262,412571041,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,main,143534404,415758497,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,main,141692256,409956932,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,runtime,140486272,409232944,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,backend,137942915,405849227,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,combined,136531678,404209527,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,allocator,58590335,163903056,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,all,56223377,160464480,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,python,50028,27824713,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_trees,6,0,main,27907124,296911854,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,runtime,27282811,293926309,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,backend,24716938,292356146,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,combined,24337998,292864226,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,allocator,20861808,126291144,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,all,16567927,121033439,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,python,36992,27489923,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,python,37444,26800164,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,all,16652451,121098670,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,allocator,20466159,122907305,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,combined,24615591,293286488,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,backend,24843250,294084193,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,runtime,27232881,296145609,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,main,27805124,296608054,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,main,27894781,296640292,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,runtime,27750250,295310640,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,backend,25700036,297848358,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,combined,24269860,292967510,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,allocator,21427166,127117788,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,all,16448833,119390324,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,python,36990,27157950,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,python,37788,26184722,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,all,16560559,119480671,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,allocator,20583083,124853223,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,combined,24408967,293201351,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,backend,24808151,289372709,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,runtime,27428162,294507232,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,main,27808834,296094530,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,main,27762446,295679989,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,runtime,27198575,293729426,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,backend,24642698,291664914,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,combined,24423631,291630445,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,allocator,20456573,124246586,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,all,16328653,120698160,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,python,36597,27442803,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,python,36498,26192003,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,all,16575519,118666598,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,allocator,20367611,124317837,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,combined,24311506,293466569,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,backend,24894097,296559429,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,runtime,27220666,297335209,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,main,27115447,297634767,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,main,28411966,297658144,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,runtime,27528546,297052939,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,backend,24958988,294909844,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,combined,24041316,293148715,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,allocator,20276148,124292469,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,all,16648481,120253278,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,python,36260,27238058,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,python,35573,25866866,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,all,16598905,119334970,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,allocator,21262831,125964294,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,combined,24943688,294947560,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,backend,25708456,296642690,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,runtime,27503181,298176985,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,main,27751492,296837142,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,main,27726687,295228205,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,runtime,27389447,296454465,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,backend,24939872,292714303,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,combined,24261350,292000705,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,allocator,20461864,124875006,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,all,16679669,120091448,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,python,35897,27339251,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +hash_table,200,0,main,20875286,285858407,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,runtime,20610765,284687626,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,backend,18134645,282392100,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,combined,17640200,283579836,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,allocator,17221449,120338199,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,all,13609763,115234937,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,python,91856,27175602,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,python,93648,26015216,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,all,13727255,114547505,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,allocator,17315783,119471237,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,combined,17464377,282368243,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,backend,18045612,285157441,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,runtime,20597187,287830533,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,main,21084621,284685263,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,main,21008837,284838164,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,runtime,20501664,283665492,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,backend,18201053,281951817,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,combined,17519515,280544927,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,allocator,17337561,118781531,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,all,13807789,115051724,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,python,89857,27196744,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,python,94803,25986661,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,all,13577929,114575564,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,allocator,17299682,118399485,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,combined,17505901,280213420,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,backend,18208816,281660645,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,runtime,20438226,282968099,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,main,20986828,287158505,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,main,21100291,284949957,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,runtime,20284356,282031053,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,backend,18487108,283403494,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,combined,17833730,282626323,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,allocator,17158920,120627118,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,all,13713737,115963611,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,python,88762,27003843,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,python,90475,26333687,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,all,14450237,116267268,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,allocator,17290377,120834303,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,combined,17592895,283564227,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,backend,18265960,283989735,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,runtime,20805068,287088526,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,main,22417605,290877263,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,main,21681749,289225401,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,runtime,21030682,286742770,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,backend,18027709,284859575,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,combined,17639611,284233264,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,allocator,17130025,120107012,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,all,13793723,116917276,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,python,86755,27449149,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,python,83197,27177044,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,all,14306444,117950160,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,allocator,17158162,121920281,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,combined,17612647,283699049,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,backend,18301726,285235663,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,runtime,20388572,286187481,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,main,21035234,285430464,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,main,21002542,285982759,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,runtime,20400240,288949700,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,backend,19131197,285830616,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,combined,17654269,284584777,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,allocator,16979592,121835809,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,all,14220134,107227134,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,python,93801,27110814,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +matmul,8,0,main,21489558,294442916,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,runtime,21081805,294634337,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,backend,17985937,291400588,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,combined,18644042,293601291,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,allocator,20403092,129767896,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,all,16631671,124286504,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,python,95522,27786914,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,python,92549,27179006,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,all,16184711,123223407,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,allocator,20153838,127866735,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,combined,17418067,289743307,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,backend,18006065,290474381,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,runtime,20695929,297301283,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,main,21375671,296492836,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,main,21423982,296467874,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,runtime,20848434,294053704,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,backend,18281562,293242079,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,combined,17658942,293313000,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,allocator,20206667,129380846,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,all,15869924,122055072,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,python,92590,27615467,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,python,97205,26623362,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,all,16243450,125481089,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,allocator,20249161,128978422,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,combined,17444088,290167275,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,backend,18159574,292499285,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,runtime,20818606,293946737,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,main,21446574,293748807,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,main,21511144,294151219,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,runtime,20883640,292594911,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,backend,17974688,289196769,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,combined,17603285,289503309,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,allocator,20361865,130236072,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,all,16457010,125885983,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,python,99156,28050940,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,python,89954,26761151,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,all,16087463,121029118,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,allocator,20807267,128997171,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,combined,17247139,289230808,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,backend,18215195,291078475,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,runtime,20966357,294861680,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,main,21694270,297403694,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,main,21254131,297597424,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,runtime,20912353,294490155,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,backend,17940149,293810163,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,combined,17899077,291741864,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,allocator,21205185,133276584,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,all,15944124,123208983,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,python,117064,27638068,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,python,90001,26443772,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,all,16198538,123562992,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,allocator,20718499,129350969,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,combined,17566084,290978605,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,backend,18069819,288249890,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,runtime,20791607,295714071,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,main,21515555,294938479,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,main,21314251,294285797,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,runtime,21471751,295524578,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,backend,18131627,291285740,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,combined,17974088,291512765,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,allocator,20102464,130404966,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,all,15991178,123706012,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,python,91752,27236327,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +k_nucleotide,8,0,main,34038733,298483946,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,runtime,32723873,298665890,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,backend,29386463,298338200,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,combined,28572897,295782231,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,allocator,32548360,136157602,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,all,27444907,130622608,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,python,73714,27826532,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,python,72815,25783546,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,all,27497426,126330568,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,allocator,32400564,136141219,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,combined,28466297,292415569,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,backend,28868662,294108280,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,runtime,32934351,298746487,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,main,33280088,300642456,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,main,33511227,301926172,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,runtime,33334161,300892074,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,backend,28800782,295958972,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,combined,28381500,296333882,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,allocator,32910521,136165257,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,all,27732242,130957929,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,python,69487,26887520,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,python,70466,26073367,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,all,28082920,131128600,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,allocator,33081044,138765682,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,combined,28708555,294773216,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,backend,29030836,297001130,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,runtime,33060279,299903438,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,main,33327079,299511292,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,main,33057200,297800352,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,runtime,32789836,297846474,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,backend,29084452,294440476,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,combined,27929170,295112544,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,allocator,33010469,135896431,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,all,27585147,130947649,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,python,68825,27463903,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,python,83335,26076355,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,all,28368050,130491018,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,allocator,32997678,134991591,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,combined,28413805,295452586,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,backend,28709345,294625604,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,runtime,33776422,300655523,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,main,33396298,297943636,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,main,33191856,300105019,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,runtime,33139678,299188672,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,backend,28822148,295019936,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,combined,28195806,294751172,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,allocator,32075673,134602678,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,all,27311003,130230115,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,python,71613,27167917,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,python,69108,26428293,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,all,27542782,128377577,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,allocator,33634605,138323565,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,combined,28395730,293730886,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,backend,28928185,296490170,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,runtime,32827482,300900522,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,main,33907320,301811522,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,main,33885702,302079361,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,runtime,33299804,301363730,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,backend,28860678,288358181,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,combined,28880200,294681995,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,allocator,32479434,136258311,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,all,28255545,133230578,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,python,99241,26853288,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 diff --git a/bench/experiments/20261008-current-python/run.py b/bench/experiments/20261008-current-python/run.py new file mode 100644 index 00000000..f9374a7e --- /dev/null +++ b/bench/experiments/20261008-current-python/run.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +"""Compare full interpreters on the repository's unchanged benchmark cases.""" +import argparse +import csv +import hashlib +import importlib.util +import json +import os +from pathlib import Path +import platform +import re +import statistics +import subprocess +import tempfile +import time + +ROOT = Path(__file__).resolve().parents[3] +spec = importlib.util.spec_from_file_location('benchmark', ROOT / 'benchmark/run.py') +benchmark = importlib.util.module_from_spec(spec) +spec.loader.exec_module(benchmark) + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def run(command, env, cpu): + start = time.perf_counter_ns() + result = subprocess.run(['taskset', '-c', str(cpu), *command], env=env, + cwd=ROOT, capture_output=True, text=True, timeout=120) + if result.returncode: + raise RuntimeError(f'{command}: {result.stderr}') + return result, time.perf_counter_ns() - start + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument('--baseline', required=True, type=Path) + ap.add_argument('--candidate', required=True, type=Path) + ap.add_argument('--baseline-backend', required=True, type=Path) + ap.add_argument('--candidate-backend', required=True, type=Path) + ap.add_argument('--allocator-backend', type=Path) + ap.add_argument('--all-backend', type=Path) + ap.add_argument('--cpu', type=int, default=24) + ap.add_argument('--pairs', type=int, default=9) + ap.add_argument('--output', required=True, type=Path) + ap.add_argument('--cases', default=','.join(benchmark.SWEEP)) + args = ap.parse_args() + if args.pairs < 1: + ap.error('--pairs must be positive') + args.output.mkdir(parents=True, exist_ok=True) + variants = { + 'main': (args.baseline, args.baseline_backend), + 'runtime': (args.candidate, args.baseline_backend), + 'backend': (args.baseline, args.candidate_backend), + 'combined': (args.candidate, args.candidate_backend), + } + if args.allocator_backend: + variants['allocator'] = (args.baseline, args.allocator_backend) + if args.all_backend: + variants['all'] = (args.candidate, args.all_backend) + metadata = {'cpu': args.cpu, 'pairs': args.pairs, 'python': platform.python_version(), + 'cpu_model': benchmark.cpu_model(), 'variants': {}, 'sources': {}} + for name, (binary, backend) in variants.items(): + with tempfile.TemporaryDirectory(prefix='kvlang-library-check-') as td: + env = dict(os.environ, KVSPACE='shm://' + td + '/store', + KVSPACE_BACKEND_PATH=str(backend), LD_DEBUG='libs', LOG_LEVEL='warn') + result, _ = run([str(binary), '-c', 'println("ready")'], env, args.cpu) + paths = re.findall(r'calling init:\s*(/\S+)', result.stderr) + metadata['variants'][name] = { + 'binary': str(binary), 'backend_path': str(backend), 'binary_sha256': sha(binary), + 'libraries': {p: sha(p) for p in paths if 'libkv' in Path(p).name}, + } + rows = [] + with (args.output / 'samples.csv').open('w', newline='') as f: + writer = csv.DictWriter(f, fieldnames=['case', 'scale', 'pair', 'variant', + 'kernel_ns', 'wall_ns', 'output_sha256'], + lineterminator='\n') + writer.writeheader() + for case in args.cases.split(','): + scale = benchmark.SWEEP[case][-1] + directory = ROOT / 'benchmark/cases' / case + kv_source = directory / (case + '.kv') + py_source = directory / (case + '.py') + metadata['sources'][case] = {'scale': scale, 'kv_sha256': sha(kv_source), + 'python_sha256': sha(py_source)} + for pair in range(args.pairs): + order = [*variants, 'python'] + if pair % 2: + order.reverse() + expected = None + for name in order: + with tempfile.TemporaryDirectory(prefix='kvlang-paired-') as td: + env = dict(os.environ, BENCH_SCALE=str(scale), LOG_LEVEL='warn') + if name == 'python': + command = ['python3', str(py_source)] + else: + binary, backend = variants[name] + source = Path(td) / (case + '.kv') + source.write_text(kv_source.read_text().replace('__SCALE__', str(scale))) + env.update(KVSPACE='shm://' + td + '/store', + KVSPACE_BACKEND_PATH=str(backend)) + command = [str(binary), str(source)] + result, wall = run(command, env, args.cpu) + ns, _, output = benchmark.parse(result.stdout) + if ns is None or ns <= 0: + raise RuntimeError(f'missing time: {name}/{case}: {result.stdout}') + if expected is not None and output != expected: + raise RuntimeError(f'output mismatch: {name}/{case}: {output!r} != {expected!r}') + expected = output + row = dict(case=case, scale=scale, pair=pair, variant=name, + kernel_ns=ns, wall_ns=wall, + output_sha256=hashlib.sha256(output.encode()).hexdigest()) + rows.append(row) + writer.writerow(row) + f.flush() + print(f'{case} pair {pair + 1}/{args.pairs}: valid', flush=True) + summary = {} + for case in args.cases.split(','): + medians = {name: statistics.median(r['kernel_ns'] for r in rows + if r['case'] == case and r['variant'] == name) / 1e6 + for name in [*variants, 'python']} + summary[case] = medians + print(case, json.dumps(medians), flush=True) + (args.output / 'metadata.json').write_text(json.dumps(metadata, indent=2) + '\n') + (args.output / 'medians-ms.json').write_text(json.dumps(summary, indent=2) + '\n') + + +if __name__ == '__main__': + main() diff --git a/runtime/src/kvcpu.c b/runtime/src/kvcpu.c index 17f08a68..18d9044e 100644 --- a/runtime/src/kvcpu.c +++ b/runtime/src/kvcpu.c @@ -1314,6 +1314,8 @@ int kvlangKvcpuExecuteMode(kvlangKv_t *kv, const char *pc, kvmode_t mode, /* 单表派发:native 算子与 control/copy 同居 myrwircaps,op_id 直查一跳到底。 */ kvlangFrame_t f = {kv, vtid, cur, inst, &yield}; f.frame_root = cur_frame; + f.pc_key = pc_key.p; + f.status_key = st_key.p; f.status_known = status; /* 本步开始前读到的 ‥status(源值,借用) */ exec_err = kvlangBuiltinNative(&f); if (f.persist_failed) @@ -1374,6 +1376,8 @@ int kvlangKvcpuExecuteMode(kvlangKv_t *kv, const char *pc, kvmode_t mode, } ci.writes = inst->writes; kvlangFrame_t cf = {kv, vtid, cur, &ci, NULL}; + cf.pc_key = pc_key.p; + cf.status_key = st_key.p; cf.status_known = status; exec_err = kvlangCtlCall(&cf); if (cf.persist_failed) diff --git a/runtime/src/runtime_internal.h b/runtime/src/runtime_internal.h index 30aec7c1..09887b89 100644 --- a/runtime/src/runtime_internal.h +++ b/runtime/src/runtime_internal.h @@ -556,6 +556,8 @@ typedef struct { const char *frame_root; /* Borrowed for this instruction. */ const char *status_known; /* 本步开始前从 kvspace 读到的 ‥status(借用);NULL = 未知 */ bool persist_failed; + const char *pc_key; + const char *status_key; } kvlangFrame_t; /* Write PC to kvspace; write status when it changes. */ diff --git a/runtime/src/vthread.c b/runtime/src/vthread.c index d785ecc9..6dce446d 100644 --- a/runtime/src/vthread.c +++ b/runtime/src/vthread.c @@ -66,14 +66,18 @@ int kvlangVthreadSet(kvlangKv_t *kv, const char *vtid, const char *pc, const cha void kvlangVthreadAdvance(kvlangFrame_t *f, const char *pc, const char *status) { kvlangStrbuf_t k1, k2; kvlangStrbufInit(&k1); kvlangStrbufInit(&k2); - kvlangKeytreeVthreadPc(f->vtid, &k1); - kvlangKeytreeVthreadStatus(f->vtid, &k2); - if (kvlangKvSetChar(f->kv, k1.p, pc) != 0) + if (!f->pc_key) + kvlangKeytreeVthreadPc(f->vtid, &k1); + if (kvlangKvSetChar(f->kv, f->pc_key ? f->pc_key : k1.p, pc) != 0) f->persist_failed = true; if (!f->persist_failed && - (!f->status_known || strcmp(f->status_known, status) != 0) && - kvlangKvSetChar(f->kv, k2.p, status) != 0) - f->persist_failed = true; + (!f->status_known || strcmp(f->status_known, status) != 0)) { + if (!f->status_key) + kvlangKeytreeVthreadStatus(f->vtid, &k2); + if (kvlangKvSetChar(f->kv, f->status_key ? f->status_key : k2.p, + status) != 0) + f->persist_failed = true; + } kvlangStrbufFree(&k1); kvlangStrbufFree(&k2); } diff --git a/runtime/src/xvalue.c b/runtime/src/xvalue.c index e06fbee3..d5684838 100644 --- a/runtime/src/xvalue.c +++ b/runtime/src/xvalue.c @@ -97,19 +97,6 @@ static int32_t al_to_dims(const char *kind, int32_t array_len, int32_t *dims) { return 0; } -/* Copy codec-owned bytes into runtime-owned storage. */ -static uint8_t *kvlangXvalueOwn(uint8_t *tmp, uint32_t tl, uint32_t *out_len) { - if (!tmp) { - *out_len = 0; - return NULL; - } - uint8_t *buf = malloc(tl); - memcpy(buf, tmp, tl); - free(tmp); - *out_len = tl; - return buf; -} - static uint8_t *kvlangXvalueEncodeTlv(const char *kind, const uint8_t *raw, uint32_t raw_len, int32_t array_len, uint32_t *out_len) { @@ -121,7 +108,8 @@ static uint8_t *kvlangXvalueEncodeTlv(const char *kind, const uint8_t *raw, *out_len = 0; return NULL; } - return kvlangXvalueOwn(tmp, tl, out_len); + *out_len = tl; + return tmp; } /* head 视图:原位取偏移与 langtype(不建 328B head、不校验)。 @@ -574,10 +562,7 @@ void kvlangXvalueNewTlvDims(kvlangXvalue_t *v, const char *kind, kvlangXvalueZero(v); return; } - uint8_t *buf = malloc(tl); - memcpy(buf, tmp, tl); - free(tmp); - v->data = buf; + v->data = tmp; v->len = tl; v->borrowed = 0; } @@ -635,13 +620,13 @@ void kvlangXvalueNewCharUtf32(kvlangXvalue_t *v, const char *s) { void kvlangXvalueNewPtr(kvlangXvalue_t *v, const char *target_langtype, const char *target) { uint8_t *tmp = NULL; - uint32_t tl = 0, len = 0; + uint32_t tl = 0; if (kvspaceNewPtr(target_langtype, target, &tmp, &tl) != 0) { kvlangXvalueZero(v); return; } - v->data = kvlangXvalueOwn(tmp, tl, &len); - v->len = len; + v->data = tmp; + v->len = tl; v->borrowed = 0; } /* def rwir 路由头:body 仅计数头 [nr:u16 LE][nw:u16 LE][dynamic:u8],无参数载荷。 From 88725dadab64aa79f53ccad46ebc47aee9b5d749 Mon Sep 17 00:00:00 2001 From: AmuroEita <1071307515@qq.com> Date: Thu, 8 Oct 2026 18:05:38 +0800 Subject: [PATCH 2/4] feat(runtime): reuse KVSpace addresses in the default executor --- .../20261008-default-runtime/README.md | 27 + .../20261008-default-runtime/metadata.json | 161 ++++ .../20261008-default-runtime/run.py | 155 ++++ .../20261008-default-runtime/samples.csv | 811 ++++++++++++++++++ .../20261008-default-runtime/summary.json | 489 +++++++++++ runtime/CMakeLists.txt | 8 +- runtime/src/kvcpu.c | 63 +- runtime/src/kvspace.c | 43 +- runtime/src/runtime_internal.h | 32 +- runtime/src/rwir_decode.c | 25 +- runtime/src/rwir_func.c | 15 +- runtime/src/vthread.c | 7 +- runtime/tests/test_key_refs.c | 139 +++ 13 files changed, 1936 insertions(+), 39 deletions(-) create mode 100644 bench/experiments/20261008-default-runtime/README.md create mode 100644 bench/experiments/20261008-default-runtime/metadata.json create mode 100644 bench/experiments/20261008-default-runtime/run.py create mode 100644 bench/experiments/20261008-default-runtime/samples.csv create mode 100644 bench/experiments/20261008-default-runtime/summary.json create mode 100644 runtime/tests/test_key_refs.c diff --git a/bench/experiments/20261008-default-runtime/README.md b/bench/experiments/20261008-default-runtime/README.md new file mode 100644 index 00000000..3d1fa519 --- /dev/null +++ b/bench/experiments/20261008-default-runtime/README.md @@ -0,0 +1,27 @@ +# Default runtime comparison + +All 10 repository workloads and their 30 frozen sweep points, with 9 alternating baseline/candidate/Python runs per point (810 samples). Every functional output matches. CPU 24, Xeon Gold 6418H, GCC 14.3, Python 3.10.12, fresh SHM stores. Both runtimes use Release `-O3 -DNDEBUG`; both SHM backends use `-O3 -g -DNDEBUG` and the same allocator dependency. The CLI, layout library, and Release dispatch frontend are identical between variants. + +The baseline is the previous optimized runtime `ddac99ab` with SHM backend `703797b9`. The candidate adds key references and the optional full-value write API. This measures the default execution path; no standalone native prototype is used. + +| Measurement | Geometric mean speedup | +|---|---:| +| Repository algorithm timers | 1.207x | +| Entire CLI invocation, including startup and layout | 1.021x | + +The 30 algorithm speedups range from 1.013x to 1.452x. Python algorithm timers remain about 85–1670 times faster; this change does not establish Python parity or a large whole-command gain. + +`samples.csv` contains every measurement and functional-output digest. `summary.json` contains all 30 medians, including whole-command times. `metadata.json` records source hashes, compiler flags, baseline heads, tracked-diff hashes, command arguments, and the libraries actually loaded. Absolute paths document this run; supply local equivalents to repeat it: + +```sh +python3 bench/experiments/20261008-default-runtime/run.py \ + --binary PATH_TO_COMMON_CLI \ + --baseline PATH_TO_BASELINE_RUNTIME \ + --candidate PATH_TO_CANDIDATE_RUNTIME \ + --frontend PATH_TO_RELEASE_FRONTEND \ + --baseline-backend PATH_TO_BASELINE_BACKEND_DIRECTORY \ + --backend PATH_TO_CANDIDATE_BACKEND_DIRECTORY \ + --output PATH_TO_RESULTS --pairs 9 --cpu 24 +``` + +The runner imports the repository's unchanged `benchmark/run.py` sweep and checks output equality, timer availability, actual runtime loading, and binary stability. These results apply to SHM; FS receives correctness coverage, and Redis performance is untested. diff --git a/bench/experiments/20261008-default-runtime/metadata.json b/bench/experiments/20261008-default-runtime/metadata.json new file mode 100644 index 00000000..3be799e3 --- /dev/null +++ b/bench/experiments/20261008-default-runtime/metadata.json @@ -0,0 +1,161 @@ +{ + "cpu": 24, + "cpu_model": "Intel(R) Xeon(R) Gold 6418H", + "python": "3.10.12", + "scheme": "shm", + "pairs": 9, + "command": [ + "bench/experiments/20261008-default-runtime/run.py", + "--binary", + "/tmp/kvlang-perf-current/bin/kvlang", + "--baseline", + "/tmp/kvlang-overall-baseline/bin/libkvlang_runtime.so", + "--candidate", + "/tmp/kvlang-overall/bin/libkvlang_runtime.so", + "--frontend", + "/tmp/kvspace-overall-build/libkvspace.so.1", + "--baseline-backend", + "/tmp/kvspace-c-perf-total-build", + "--backend", + "/tmp/kvspace-c-overall-build", + "--output", + "/tmp/kvlang-overall-final4-shm", + "--pairs", + "9", + "--builds", + "/tmp/kvlang-overall-baseline-build", + "/tmp/kvlang-overall-build", + "/tmp/kvspace-c-perf-total-build", + "/tmp/kvspace-c-overall-build", + "/tmp/kvspace-overall-build" + ], + "files": { + "/tmp/kvlang-perf-current/bin/kvlang": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "/tmp/kvlang-overall-baseline/bin/libkvlang_runtime.so": "5d4b02633175f64bde033257146e8bab162068219b6e7809b5e3e2487830f6aa", + "/tmp/kvlang-overall/bin/libkvlang_runtime.so": "a1fde46f645b80ecad9d722d6e366e7e88dfc62493bc870fb89d9703cb1aecb4", + "/tmp/kvspace-overall-build/libkvspace.so.1": "b8d536cd6f6176e90a5de6c84ffd09114e220b89d5ad0f8466321d06cb177af4" + }, + "loaded": { + "baseline": { + "/tmp/kvspace-overall-build/libkvspace.so.1": "b8d536cd6f6176e90a5de6c84ffd09114e220b89d5ad0f8466321d06cb177af4", + "/tmp/kvlang-overall-baseline/bin/libkvlang_runtime.so": "5d4b02633175f64bde033257146e8bab162068219b6e7809b5e3e2487830f6aa", + "/tmp/kvlang-perf-current/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "candidate": { + "/tmp/kvspace-overall-build/libkvspace.so.1": "b8d536cd6f6176e90a5de6c84ffd09114e220b89d5ad0f8466321d06cb177af4", + "/tmp/kvlang-overall/bin/libkvlang_runtime.so": "a1fde46f645b80ecad9d722d6e366e7e88dfc62493bc870fb89d9703cb1aecb4", + "/tmp/kvlang-perf-current/bin/libkvlanglayout.so": "30af52956c24a10bf98ee6b5dc1507003993e79606a40aef43457516012599ef", + "/tmp/kvspace-c-overall-build/libkvspace-c.so.1": "747a2d9d327007f1228a0c7481f31eb8aa34aebbe7dff08c83842411d253f37c" + } + }, + "sources": { + "iops": { + "kv": "360d3a2b7bd4d014255ba34cd86f6c72ee72a46b4787ed248ee5a6db96887dd7", + "py": "e53ef1d628cf1b39be8e2ee2e7ee04a9e0517403226e5f8f18ada9a44ce12d04" + }, + "prime_sieve": { + "kv": "e0dd66398f3027ccd02ea9615089e57693840c037e4674f492f46c4cd6aae346", + "py": "7365d00a931b3332c68021f14646d651cabbb208c0a2dd6cdd5635bed9475af9" + }, + "fib": { + "kv": "f9f308e2939ecd712442586ee87b8340f55331e75bcd6a6c6ffc12aea3a7bab4", + "py": "63a329cd3bbc9271f9142f9fa762b3389c17525679763a14e21a7138e12987fa" + }, + "nqueens": { + "kv": "e4ba6073d1cd9e76949e3b81b46604e28b97e712afd6f6158db811f7e97c169b", + "py": "61ebaeccf79bf06a85e213180930552748cca126ec60b8636a7ed7849765a8af" + }, + "quicksort": { + "kv": "7e50702ad83e4a9e4e9b9627a92f2a6d22abe3219f830bb17320a6bc400f7f16", + "py": "048c1991bb5e6f528fbacfa8167abe5d860a71117142e736613ced91b8a1a92d" + }, + "binary_search": { + "kv": "42e05e05ccbbdb4af0e5b175ad4f87a367d00a97ddcd4ae0ff4d25edfc7ac153", + "py": "64e43b7a2a8b0fd928bb93cc8b57cd3f5fd45daf97f46ea269090a395ac6e6dc" + }, + "binary_trees": { + "kv": "39add5228fab5953224b0959b0b8b176586a866179608909390108189f6b46d8", + "py": "454f14208f826ef084a593953b6780ab29f94f5d565e8b55d5a322f037323b13" + }, + "hash_table": { + "kv": "606feac126238d1908a787ba46f1a7a8d4fd2858cf6a69e327c2acc2f6605541", + "py": "b19fbe72320375471e91ad31093b37b385f8ef5be46a29465381bac05391ced0" + }, + "matmul": { + "kv": "ba5437bb1dc4f702073fc8c9c8519b28ee502cb27b51d1e5ba09b69262d1ac89", + "py": "103b272337bff44df02001a52dea61d6c9db8e843245dbc869afe673203764f8" + }, + "k_nucleotide": { + "kv": "9d4cc69ee5455b0902f47b7b6a2e60bbd6d3432084b6e15c252ecbbfbcd5a694", + "py": "c35d8d9fe4cb2be7065befed69a1c763a7d3ab6e5c569857249b21bbf8a8a6ec" + } + }, + "builds": { + "/tmp/kvlang-overall-baseline-build": { + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_C_COMPILER": "/usr/bin/cc", + "CMAKE_C_FLAGS": "", + "CMAKE_C_FLAGS_DEBUG": "-g", + "CMAKE_C_FLAGS_MINSIZEREL": "-Os -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -DNDEBUG", + "CMAKE_C_FLAGS_RELWITHDEBINFO": "-O2 -g -DNDEBUG", + "CMAKE_HOME_DIRECTORY": "/tmp/kvlang-overall-baseline/runtime", + "head": "ddac99ab9bf58d8cc43133137fff7639da5ede2d", + "diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0" + }, + "/tmp/kvlang-overall-build": { + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_C_COMPILER": "/usr/bin/cc", + "CMAKE_C_FLAGS": "", + "CMAKE_C_FLAGS_DEBUG": "-g", + "CMAKE_C_FLAGS_MINSIZEREL": "-Os -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -DNDEBUG", + "CMAKE_C_FLAGS_RELWITHDEBINFO": "-O2 -g -DNDEBUG", + "CMAKE_HOME_DIRECTORY": "/tmp/kvlang-overall/runtime", + "head": "ddac99ab9bf58d8cc43133137fff7639da5ede2d", + "diff_sha256": "cd37c846c226246482068e9330a9c66aad52432112b2402a95021bae6e884873", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0" + }, + "/tmp/kvspace-c-perf-total-build": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo", + "CMAKE_C_COMPILER": "/usr/bin/cc", + "CMAKE_C_FLAGS": "-I/tmp/slotsboxmalloc-perf-leaf/include -I/tmp/kvspace-direct-child-deps/include", + "CMAKE_C_FLAGS_DEBUG": "-g", + "CMAKE_C_FLAGS_MINSIZEREL": "-Os -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -DNDEBUG", + "CMAKE_C_FLAGS_RELWITHDEBINFO": "-O3 -g -DNDEBUG", + "CMAKE_HOME_DIRECTORY": "/tmp/kvspace-c-perf-write", + "head": "703797b95bd27086975df609433c94347832df37", + "diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0" + }, + "/tmp/kvspace-c-overall-build": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo", + "CMAKE_C_COMPILER": "/usr/bin/cc", + "CMAKE_C_FLAGS": "-I/tmp/slotsboxmalloc-perf-leaf/include -I/tmp/kvspace-direct-child-deps/include", + "CMAKE_C_FLAGS_DEBUG": "-g", + "CMAKE_C_FLAGS_MINSIZEREL": "-Os -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -DNDEBUG", + "CMAKE_C_FLAGS_RELWITHDEBINFO": "-O3 -g -DNDEBUG", + "CMAKE_HOME_DIRECTORY": "/tmp/kvspace-c-overall", + "head": "703797b95bd27086975df609433c94347832df37", + "diff_sha256": "3fd827782cf71476356795df257e54b4bf755e5ad9f784c74f37d8eb6b8764c3", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0" + }, + "/tmp/kvspace-overall-build": { + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_C_COMPILER": "/usr/bin/cc", + "CMAKE_C_FLAGS": "", + "CMAKE_C_FLAGS_DEBUG": "-g", + "CMAKE_C_FLAGS_MINSIZEREL": "-Os -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -DNDEBUG", + "CMAKE_C_FLAGS_RELWITHDEBINFO": "-O2 -g -DNDEBUG", + "CMAKE_HOME_DIRECTORY": "/tmp/kvspace-overall", + "head": "b3e9f3fa6692dacbfefe6e8892ffc48edefd854d", + "diff_sha256": "42fc09c5fdca0c40db72610cd34451be8999e14c81ebf2242f371b0f26390ede", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0" + } + } +} diff --git a/bench/experiments/20261008-default-runtime/run.py b/bench/experiments/20261008-default-runtime/run.py new file mode 100644 index 00000000..a8902f99 --- /dev/null +++ b/bench/experiments/20261008-default-runtime/run.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 +"""Paired full-suite runtime comparison with the frozen repository workloads.""" +import argparse +import csv +import hashlib +import importlib.util +import json +import math +import os +from pathlib import Path +import platform +import re +import statistics +import subprocess +import sys +import tempfile +import time + +ROOT = Path(__file__).resolve().parents[3] +spec = importlib.util.spec_from_file_location('benchmark', ROOT / 'benchmark/run.py') +benchmark = importlib.util.module_from_spec(spec) +spec.loader.exec_module(benchmark) + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for name in ('binary', 'baseline', 'candidate', 'frontend', 'backend', 'output'): + ap.add_argument('--' + name, type=Path, required=True) + ap.add_argument('--pairs', type=int, default=9) + ap.add_argument('--cpu', type=int, default=24) + ap.add_argument('--scheme', choices=('shm', 'fs'), default='shm') + ap.add_argument('--baseline-backend', type=Path) + ap.add_argument('--builds', type=Path, nargs='+', default=[]) + args = ap.parse_args() + if args.pairs < 1: + ap.error('--pairs must be positive') + args.output.mkdir(parents=True, exist_ok=True) + variants = {'baseline': args.baseline, 'candidate': args.candidate, 'python': None} + metadata = dict(cpu=args.cpu, cpu_model=benchmark.cpu_model(), + python=platform.python_version(), scheme=args.scheme, + pairs=args.pairs, command=sys.argv, files={}, loaded={}, sources={}, builds={}) + for path in (args.binary, args.baseline, args.candidate, args.frontend): + metadata['files'][str(path)] = sha(path) + for build in args.builds: + fields = dict(re.findall(r'^(CMAKE_\w+):[^=]+=(.*)$', + (build / 'CMakeCache.txt').read_text(), re.MULTILINE)) + source = fields['CMAKE_HOME_DIRECTORY'] + info = {k: v for k, v in fields.items() + if k in ('CMAKE_BUILD_TYPE', 'CMAKE_C_COMPILER', 'CMAKE_HOME_DIRECTORY') + or k.startswith('CMAKE_C_FLAGS')} + info['head'] = subprocess.check_output(['git', '-C', source, 'rev-parse', 'HEAD'], + text=True).strip() + diff = subprocess.check_output(['git', '-C', source, 'diff', 'HEAD']) + info['diff_sha256'] = hashlib.sha256(diff).hexdigest() + info['compiler'] = subprocess.check_output([fields['CMAKE_C_COMPILER'], '--version'], + text=True).splitlines()[0] + metadata['builds'][str(build)] = info + rows = [] + + def run(case, scale, variant, probe=False): + with tempfile.TemporaryDirectory(prefix='kvlang-overall-') as td: + env = dict(os.environ, BENCH_SCALE=str(scale), LOG_LEVEL='warn') + directory = ROOT / 'benchmark/cases' / case + if variant == 'python': + command = ['python3', str(directory / (case + '.py'))] + env.pop('LD_PRELOAD', None) + else: + source = Path(td) / (case + '.kv') + source.write_text((directory / (case + '.kv')).read_text() + .replace('__SCALE__', str(scale))) + env.update(KVSPACE=f'{args.scheme}://{td}/store', + KVSPACE_BACKEND_PATH=str(args.baseline_backend + if variant == 'baseline' and args.baseline_backend + else args.backend), + LD_PRELOAD=f'{variants[variant]}:{args.frontend}') + if probe: + env['LD_DEBUG'] = 'libs' + command = [str(args.binary), '-c', 'println("ready")'] if probe else [ + str(args.binary), str(source)] + start = time.perf_counter_ns() + result = subprocess.run(['taskset', '-c', str(args.cpu), *command], + cwd=ROOT, env=env, capture_output=True, + text=True, timeout=180) + wall = time.perf_counter_ns() - start + if result.returncode: + raise RuntimeError(f'{variant}/{case}/{scale}: {result.stderr}') + return result, wall + + for variant in ('baseline', 'candidate'): + result, _ = run('iops', 500, variant, probe=True) + paths = re.findall(r'calling init:\s*(/\S+)', result.stderr) + metadata['loaded'][variant] = { + p: sha(p) for p in paths if 'libkv' in Path(p).name} + if str(variants[variant]) not in metadata['loaded'][variant]: + raise RuntimeError(f'expected runtime was not loaded: {variant}') + with (args.output / 'samples.csv').open('w', newline='') as f: + writer = csv.DictWriter(f, fieldnames=['case', 'scale', 'pair', 'variant', + 'kernel_ns', 'wall_ns', 'output_sha256'], + lineterminator='\n') + writer.writeheader() + for case, scales in benchmark.SWEEP.items(): + directory = ROOT / 'benchmark/cases' / case + metadata['sources'][case] = { + ext: sha(directory / (case + '.' + ext)) for ext in ('kv', 'py')} + for scale in scales: + expected = None + for pair in range(args.pairs): + order = list(variants)[::1 if pair % 2 == 0 else -1] + for variant in order: + result, wall = run(case, scale, variant) + ns, _, output = benchmark.parse(result.stdout) + if ns is None or ns <= 0: + raise RuntimeError(f'missing timer: {variant}/{case}/{scale}') + if expected is not None and output != expected: + raise RuntimeError(f'output mismatch: {variant}/{case}/{scale}') + expected = output + row = dict(case=case, scale=scale, pair=pair, variant=variant, + kernel_ns=ns, wall_ns=wall, + output_sha256=hashlib.sha256(output.encode()).hexdigest()) + rows.append(row) + writer.writerow(row) + f.flush() + print(f'{case}/{scale}: {args.pairs} valid pairs', flush=True) + points = [] + for case, scales in benchmark.SWEEP.items(): + for scale in scales: + med = {variant: statistics.median(r['kernel_ns'] for r in rows + if (r['case'], r['scale'], r['variant']) == (case, scale, variant)) + for variant in variants} + points.append(dict(case=case, scale=scale, medians_ns=med, + wall_medians_ns={variant: statistics.median(r['wall_ns'] for r in rows + if (r['case'], r['scale'], r['variant']) == (case, scale, variant)) + for variant in variants}, + speedup=med['baseline'] / med['candidate'], + python_ratio=med['candidate'] / med['python'])) + gains = [p['speedup'] for p in points] + summary = dict(points=points, geometric_mean=math.exp(statistics.mean(map(math.log, gains))), + wall_geometric_mean=math.exp(statistics.mean(math.log( + p['wall_medians_ns']['baseline'] / p['wall_medians_ns']['candidate']) + for p in points)), + minimum=min(gains), maximum=max(gains), samples=len(rows)) + for files in (metadata['files'], *metadata['loaded'].values()): + if any(sha(path) != digest for path, digest in files.items()): + raise RuntimeError('a measured binary changed during the run') + (args.output / 'metadata.json').write_text(json.dumps(metadata, indent=2) + '\n') + (args.output / 'summary.json').write_text(json.dumps(summary, indent=2) + '\n') + print(json.dumps({k: v for k, v in summary.items() if k != 'points'}), flush=True) + + +if __name__ == '__main__': + main() diff --git a/bench/experiments/20261008-default-runtime/samples.csv b/bench/experiments/20261008-default-runtime/samples.csv new file mode 100644 index 00000000..7d3eec22 --- /dev/null +++ b/bench/experiments/20261008-default-runtime/samples.csv @@ -0,0 +1,811 @@ +case,scale,pair,variant,kernel_ns,wall_ns,output_sha256 +iops,500,0,baseline,5037292,99355308,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,0,candidate,3570308,101840473,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,0,python,26541,28856941,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,1,python,40396,27143659,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,1,candidate,3607305,98212648,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,1,baseline,5080420,100256229,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,2,baseline,5719993,99447887,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,2,candidate,3613915,98930952,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,2,python,47196,27826115,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,3,python,52086,27753781,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,3,candidate,3572894,96770354,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,3,baseline,5106735,100635451,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,4,baseline,5174610,102608100,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,4,candidate,4075275,99533746,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,4,python,26098,27509358,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,5,python,25705,26661900,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,5,candidate,3572017,95708432,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,5,baseline,5071617,98832329,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,6,baseline,5095687,99727453,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,6,candidate,3590924,99291848,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,6,python,25768,27868976,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,7,python,26378,26865145,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,7,candidate,3557244,96135106,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,7,baseline,5069484,98711685,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,8,baseline,5169263,102171130,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,8,candidate,3533732,97833151,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,500,8,python,26330,27126626,87df4fb223784083d4d1842c5720f1d694ab98dcfe0662ebc70c97dd54cf5a2c +iops,1000,0,baseline,9881362,103373715,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,0,candidate,6832340,100224120,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,0,python,48855,27451697,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,1,python,50113,26395925,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,1,candidate,6965783,100329032,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,1,baseline,9773189,103240425,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,2,baseline,11025240,105449886,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,2,candidate,6791048,103048309,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,2,python,52752,28047124,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,3,python,48675,27321436,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,3,candidate,6924042,99999718,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,3,baseline,9899045,104319706,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,4,baseline,9794296,105522569,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,4,candidate,6896213,103251356,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,4,python,57204,27729767,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,5,python,49428,27064716,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,5,candidate,6913322,101462198,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,5,baseline,10396980,104584645,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,6,baseline,10395943,105246233,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,6,candidate,6871473,102731408,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,6,python,49532,27500610,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,7,python,49516,27569925,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,7,candidate,6833756,104074698,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,7,baseline,9821064,105075683,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,8,baseline,9883273,104736969,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,8,candidate,6868755,102078410,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,1000,8,python,49011,27992593,4dfdaa5a71f3271cc33ee7129e21ae1a5ff8c7344716df9869744d12ac35a1bf +iops,2000,0,baseline,19374374,113350382,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,candidate,13627363,107965878,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,0,python,94684,28450029,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,python,95102,26611409,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,candidate,14882363,109177663,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,1,baseline,19938078,113446713,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,baseline,19718990,114631136,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,candidate,13389470,107539743,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,2,python,94604,27193481,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,python,94044,27215694,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,candidate,13267928,109315128,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,3,baseline,20520192,118062227,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,baseline,21207405,118232433,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,candidate,13465950,107016197,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,4,python,150087,27927552,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,python,110626,26992161,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,candidate,13286121,108171773,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,5,baseline,19277012,117455192,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,baseline,19322385,112254377,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,candidate,13515427,107851174,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,6,python,94308,27467864,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,python,95126,26671911,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,candidate,13326326,109216427,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,7,baseline,19455861,113200098,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,baseline,19547219,113061284,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,candidate,13920592,109009324,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +iops,2000,8,python,99482,27545771,20b5a01532f653a50926640844157e71eda4465826c41f8ad38dc8e3abd8c544 +prime_sieve,50,0,baseline,10576216,104729029,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,0,candidate,7582960,104569863,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,0,python,33816,27731982,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,1,python,35375,26727295,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,1,candidate,8226513,103347080,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,1,baseline,10016850,106493620,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,2,baseline,9571369,104190277,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,2,candidate,7584237,102758841,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,2,python,61463,27511386,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,3,python,37111,27286781,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,3,candidate,7638717,104711582,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,3,baseline,9362290,102921197,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,4,baseline,9479087,107995751,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,4,candidate,7694553,103161850,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,4,python,38413,27711799,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,5,python,36014,26935709,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,5,candidate,7626474,101882130,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,5,baseline,9377511,105389723,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,6,baseline,9397659,105157616,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,6,candidate,7642949,101822131,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,6,python,38576,27767788,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,7,python,34944,26817014,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,7,candidate,7629267,103594606,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,7,baseline,9432206,103521563,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,8,baseline,9343562,108711331,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,8,candidate,7807296,103304801,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,50,8,python,34368,29099218,99a7f7fb9baca773ead4dc5de32f095c32ffc4b89d1b1b8a011ab3071cd886ae +prime_sieve,75,0,baseline,17841702,115453201,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,0,candidate,13325923,107146261,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,0,python,54967,27760587,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,1,python,91451,26529165,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,1,candidate,13332536,106821603,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,1,baseline,17124454,110647933,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,2,baseline,17254278,111130357,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,2,candidate,13329141,106861351,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,2,python,59007,27361162,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,3,python,56034,26538536,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,3,candidate,13373094,107506639,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,3,baseline,17177148,112019777,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,4,baseline,17182438,111903328,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,4,candidate,13347944,108047843,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,4,python,58648,28133142,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,5,python,57607,26733330,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,5,candidate,13357011,106665584,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,5,baseline,17115291,111521783,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,6,baseline,17280448,110872371,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,6,candidate,14203281,108096302,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,6,python,67211,27267817,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,7,python,55560,26679086,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,7,candidate,13654949,109883788,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,7,baseline,17287715,115037546,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,8,baseline,17310924,113664763,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,8,candidate,13371730,107911497,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,75,8,python,139358,28504124,129d5423874b67c5f4de8c9acdf666d0aa7e09136b12de8f9d4d32b8c15cd763 +prime_sieve,100,0,baseline,24416507,120176637,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,candidate,18379649,112879580,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,0,python,80955,27713082,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,python,75670,26335285,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,candidate,20337442,117186443,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,1,baseline,24435598,119797622,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,baseline,24235049,121310311,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,candidate,19302180,113900090,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,2,python,77068,28677353,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,python,79467,26448678,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,candidate,18510667,111957345,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,3,baseline,24564717,119952077,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,baseline,24943732,120515319,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,candidate,18488119,114605777,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,4,python,81061,27698980,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,python,85734,26721366,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,candidate,18608670,112441282,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,5,baseline,24357340,119617386,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,baseline,24437457,118142548,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,candidate,18638024,112873942,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,6,python,76298,27991467,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,python,77232,26647043,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,candidate,18461282,112177418,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,7,baseline,24447174,118198601,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,baseline,24583618,120441278,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,candidate,18614369,112324425,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +prime_sieve,100,8,python,81059,28001530,ebe049aeb82284bd41b35f668e5f7f4236188dc6c7d689dcec65abeea1bf1eba +fib,8,0,baseline,12633769,105880509,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,0,candidate,12456718,106535905,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,0,python,10077,27320542,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,1,python,10181,26310547,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,1,candidate,12414568,105456244,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,1,baseline,12653442,106010110,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,2,baseline,13089784,106881750,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,2,candidate,12786146,107825009,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,2,python,11422,28181381,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,3,python,10841,27084533,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,3,candidate,12483084,105596693,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,3,baseline,12678169,105775349,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,4,baseline,12789851,106292186,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,4,candidate,12520267,106661968,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,4,python,9920,27246769,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,5,python,9807,26264772,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,5,candidate,12454442,105894932,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,5,baseline,12598708,106103259,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,6,baseline,12604693,105467312,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,6,candidate,12409070,105137687,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,6,python,10656,27007256,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,7,python,10065,26529096,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,7,candidate,12507930,106476115,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,7,baseline,12735209,106113842,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,8,baseline,12680720,106079174,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,8,candidate,12630407,105762621,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,8,8,python,10959,28184360,b29fd556fbba91f88d758fed73dc057fb78a40c1e3223618b8e96ee86a7d36cc +fib,9,0,baseline,20909425,116463739,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,0,candidate,20271840,114479067,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,0,python,14737,27008531,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,1,python,14831,26413599,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,1,candidate,20003854,113437325,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,1,baseline,20305377,113553703,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,2,baseline,20085126,114231563,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,2,candidate,19942330,112660537,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,2,python,14822,27437719,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,3,python,14674,26816177,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,3,candidate,20011578,113185676,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,3,baseline,20502326,114456126,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,4,baseline,20276690,113525234,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,4,candidate,19910833,113124624,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,4,python,14561,27212692,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,5,python,15006,26449167,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,5,candidate,19899648,112919274,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,5,baseline,20415868,113227728,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,6,baseline,20305737,113594789,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,6,candidate,20471337,114702125,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,6,python,15155,27876837,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,7,python,14291,27043726,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,7,candidate,19990749,114111935,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,7,baseline,20280370,113484587,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,8,baseline,20326313,114317451,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,8,candidate,19957669,112499008,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,9,8,python,14688,27628580,4468d89c27af79abf207da3b2da33101931df1c4b25687f713e417891d80689c +fib,10,0,baseline,32809820,126975846,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,candidate,32145238,126771521,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,0,python,19214,27737708,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,python,18874,26293409,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,candidate,32303454,125478642,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,1,baseline,32583199,126963386,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,baseline,32613895,126517034,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,candidate,32066042,125518934,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,2,python,19568,27413232,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,python,18980,26121331,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,candidate,32081291,124195298,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,3,baseline,32811470,126187192,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,baseline,32645010,126214171,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,candidate,32174341,124824534,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,4,python,19749,27379976,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,python,18853,26306502,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,candidate,32040317,124857491,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,5,baseline,32601209,127283077,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,baseline,32726667,127972616,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,candidate,31832742,126752670,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,6,python,19212,28023330,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,python,19719,26922029,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,candidate,32812032,125760440,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,7,baseline,32644820,126996845,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,baseline,32765521,127911933,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,candidate,31993468,126056140,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +fib,10,8,python,20073,27877256,f4984ece981404282fe7b950d27eb561949838ac6efb94fbe402a0132eaf3216 +nqueens,4,0,baseline,10093661,103131425,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,0,candidate,9941020,104037918,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,0,python,21646,28357927,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,1,python,20100,26599955,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,1,candidate,9988844,103603482,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,1,baseline,10087902,104743171,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,2,baseline,10590720,104720193,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,2,candidate,9948278,103433205,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,2,python,20816,28000908,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,3,python,19487,26737812,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,3,candidate,10031208,104030943,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,3,baseline,10148910,104831632,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,4,baseline,10097932,104184466,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,4,candidate,9977752,103089529,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,4,python,20963,27266944,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,5,python,20174,27266696,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,5,candidate,9931514,103370083,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,5,baseline,10074925,105862420,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,6,baseline,10111359,104354337,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,6,candidate,9915367,106607680,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,6,python,21250,27974056,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,7,python,20746,26231543,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,7,candidate,10484786,105992723,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,7,baseline,10198474,105954723,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,8,baseline,10239503,105363771,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,8,candidate,10467466,104066911,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,4,8,python,20954,27107624,1ce0201eada0f2694c5dc9ddf674332881751b9b30031847708eef34562f702a +nqueens,5,0,baseline,30286312,125018414,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,0,candidate,29831458,122739404,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,0,python,38637,28088478,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,1,python,39269,27484725,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,1,candidate,30469046,123987197,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,1,baseline,30468179,126609968,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,2,baseline,31847956,126458759,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,2,candidate,30009155,125133266,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,2,python,38128,27729252,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,3,python,41503,26971773,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,3,candidate,29927687,123512140,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,3,baseline,30429808,124640174,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,4,baseline,30305681,123561234,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,4,candidate,30988923,125839317,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,4,python,38979,27937132,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,5,python,37095,26848062,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,5,candidate,29812590,124959298,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,5,baseline,30296185,124012392,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,6,baseline,30448032,124924825,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,6,candidate,29962657,125002836,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,6,python,37409,28418656,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,7,python,40501,26342995,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,7,candidate,29716758,123776590,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,7,baseline,30318826,124576132,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,8,baseline,30290871,124399900,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,8,candidate,29810381,124356945,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,5,8,python,38053,27403998,db9e2c68de0496bd3b07b144fb8f6451856efc07c935cedf4abe1927bd097546 +nqueens,6,0,baseline,86389476,181908219,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,candidate,84162257,179552923,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,0,python,82386,27531393,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,python,78684,26641143,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,candidate,84609956,179158560,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,1,baseline,85756851,179489330,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,baseline,86005952,179356956,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,candidate,84502750,177882277,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,2,python,79708,27385357,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,python,79311,26266222,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,candidate,84006069,177042459,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,3,baseline,85810377,179488163,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,baseline,86382193,182332435,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,candidate,85243547,179174882,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,4,python,84518,28033526,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,python,78134,26400108,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,candidate,84317696,179933053,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,5,baseline,89016786,184179595,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,baseline,87362154,183430321,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,candidate,84933500,181295516,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,6,python,81176,27890170,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,python,80527,26485163,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,candidate,85519057,178982570,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,7,baseline,86453340,182638712,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,baseline,86005752,180547853,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,candidate,85310146,180460642,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +nqueens,6,8,python,90552,28721759,69c4e2f0e029684c0708dc099d626eeec8ee9de6d098a1d1ba60bf62df48eba4 +quicksort,32,0,baseline,6275340,103286174,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,0,candidate,4937579,102908116,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,0,python,22621,27733924,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,1,python,22136,26768277,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,1,candidate,5466302,101787799,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,1,baseline,6304886,103920724,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,2,baseline,6305777,104400103,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,2,candidate,4928966,102702775,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,2,python,22561,27022649,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,3,python,23151,26516876,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,3,candidate,4899921,101541046,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,3,baseline,6200512,103766919,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,4,baseline,6309569,102662551,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,4,candidate,4962187,100241920,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,4,python,22962,27121411,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,5,python,21826,26457049,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,5,candidate,4919866,100379237,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,5,baseline,6281183,103110794,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,6,baseline,6248859,102155992,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,6,candidate,4913000,101863339,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,6,python,22271,27129630,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,7,python,22368,26091800,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,7,candidate,4898131,101333748,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,7,baseline,6303811,102851412,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,8,baseline,6217249,103876710,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,8,candidate,4954962,105365998,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,32,8,python,22352,28227892,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,0,baseline,13194676,110886694,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,0,candidate,9432466,108202088,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,0,python,45634,28113091,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,1,python,49060,26316249,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,1,candidate,9638282,107975213,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,1,baseline,12660595,111361617,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,2,baseline,12656939,110440917,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,2,candidate,9482629,107583416,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,2,python,48497,27263196,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,3,python,45419,26472339,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,3,candidate,10154480,109642391,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,3,baseline,12619263,109960448,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,4,baseline,14187230,112579748,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,4,candidate,9501270,107805006,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,4,python,45054,27722814,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,5,python,46149,26413115,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,5,candidate,9458234,107827582,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,5,baseline,12719645,112214702,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,6,baseline,12651372,110508471,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,6,candidate,9547837,107641329,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,6,python,46284,27694967,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,7,python,45318,27048564,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,7,candidate,9534055,106927097,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,7,baseline,12612751,110349075,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,8,baseline,12783957,111831580,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,8,candidate,10197153,108890607,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,64,8,python,45767,27372745,57de568a9faccb995099667ab5418c0bee36be7151dd697d3e800297d55363d5 +quicksort,128,0,baseline,27622435,126103905,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,candidate,19870510,117466242,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,0,python,87474,28056762,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,python,86176,26763053,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,candidate,19771617,118217299,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,1,baseline,26923323,125663205,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,baseline,26601720,126235200,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,candidate,20045072,118298592,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,2,python,89320,27400595,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,python,87830,26374925,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,candidate,19658236,117236878,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,3,baseline,26573620,124234542,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,baseline,26817740,126197140,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,candidate,19873134,117092599,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,4,python,88895,27463927,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,python,88815,26510979,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,candidate,19843078,117199768,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,5,baseline,27631005,126885792,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,baseline,27042731,127272336,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,candidate,19882448,119591826,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,6,python,87616,28532004,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,python,86791,28212968,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,candidate,20411980,120966316,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,7,baseline,26900784,127041733,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,baseline,27585517,129169672,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,candidate,20662357,119943757,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +quicksort,128,8,python,89389,27709744,bbda28afdba875990fbdb5622653b1fe69068bd713e72aa25b42ebf07d72b3f8 +binary_search,16,0,baseline,10197966,105242122,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,0,candidate,9786958,105849321,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,0,python,12656,27880095,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,1,python,13310,26876918,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,1,candidate,9777393,104682013,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,1,baseline,10433935,109116979,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,2,baseline,10500614,107984478,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,2,candidate,9852623,105861920,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,2,python,13623,27496221,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,3,python,13321,26481431,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,3,candidate,9703052,104858719,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,3,baseline,10240524,105188445,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,4,baseline,10260807,106081570,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,4,candidate,9775145,104850224,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,4,python,13469,27765736,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,5,python,13241,26527797,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,5,candidate,9911762,104886262,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,5,baseline,10188642,106377153,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,6,baseline,10197871,104585593,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,6,candidate,9916135,106564027,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,6,python,13166,28653749,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,7,python,13019,26466542,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,7,candidate,9713715,104544094,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,7,baseline,10322163,106102489,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,8,baseline,10739882,108777896,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,8,candidate,10338021,106318080,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,16,8,python,13018,27329981,b04bd078765ce9d70851982ca31f5fe63c92e1978fc9f2c9fe240df7df7c27b9 +binary_search,32,0,baseline,20639537,116743002,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,0,candidate,19402543,114937357,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,0,python,24155,27444115,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,1,python,25149,25988884,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,1,candidate,20804647,116402233,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,1,baseline,20535139,116965488,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,2,baseline,20393286,117352525,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,2,candidate,19451754,114690097,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,2,python,26383,27451246,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,3,python,25540,27255655,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,3,candidate,19686328,116402022,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,3,baseline,21484363,116843804,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,4,baseline,20700658,116831436,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,4,candidate,19551900,114979176,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,4,python,25296,28118422,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,5,python,25013,26151793,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,5,candidate,19505805,114880596,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,5,baseline,21901298,117857661,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,6,baseline,20773565,116792047,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,6,candidate,20001675,116608661,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,6,python,25555,28257621,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,7,python,24205,27063239,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,7,candidate,19630397,114987565,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,7,baseline,20775370,116743048,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,8,baseline,20708502,116333001,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,8,candidate,19283166,114675054,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,32,8,python,25935,27721921,0b441261f25d71bff9503bd33abcd4e299625bfb8476473d64cd1e8e20c019bc +binary_search,64,0,baseline,42835729,138584320,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,candidate,40136816,135890805,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,0,python,46682,27698398,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,python,47605,26638298,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,candidate,40158984,137840813,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,1,baseline,43251613,140706148,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,baseline,43241241,140645238,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,candidate,39781809,137353321,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,2,python,51085,27409676,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,python,47527,26197482,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,candidate,39650617,134656162,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,3,baseline,42282252,137116143,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,baseline,42367089,137316547,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,candidate,39759213,134963652,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,4,python,49042,26993553,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,python,47491,26092831,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,candidate,40021326,134833000,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,5,baseline,42823490,138618827,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,baseline,42610999,137970613,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,candidate,39937404,135185882,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,6,python,46288,27506718,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,python,46464,26099924,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,candidate,40081447,135046614,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,7,baseline,42500066,138957559,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,baseline,42733665,137784940,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,candidate,40208958,137608878,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_search,64,8,python,45532,28270862,43aff60f897cdfa8cfbdfc89f3db6f90afd13037e9bd798f0c6ec8d7abc66636 +binary_trees,4,0,baseline,4284124,101278157,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,0,candidate,3661827,101436719,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,0,python,12099,27842063,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,1,python,12402,27060416,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,1,candidate,3589996,100912365,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,1,baseline,4322839,100355423,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,2,baseline,4338756,100421915,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,2,candidate,3799230,100355785,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,2,python,12006,27735015,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,3,python,18356,26666138,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,3,candidate,3686743,98413728,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,3,baseline,4286459,100137527,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,4,baseline,4343596,99341164,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,4,candidate,3681269,99948478,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,4,python,12463,27026642,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,5,python,11730,26283901,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,5,candidate,3633408,101018735,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,5,baseline,4288252,99866634,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,6,baseline,4712274,102354455,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,6,candidate,3607766,100372997,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,6,python,12049,27567134,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,7,python,11415,26698640,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,7,candidate,4141478,99769858,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,7,baseline,4889059,103582454,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,8,baseline,4276069,103045850,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,8,candidate,3637185,102302620,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,4,8,python,12100,29503375,0413d5904246a13731d2f4e61d8da90328fd41ac76e1544d710cd2babdf77b5b +binary_trees,5,0,baseline,7588903,105257230,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,0,candidate,5655840,104498453,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,0,python,19811,28377549,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,1,python,20263,27095922,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,1,candidate,6295732,103809158,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,1,baseline,7021893,104121799,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,2,baseline,7024639,103905066,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,2,candidate,6388935,103912850,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,2,python,20534,27484203,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,3,python,20207,26760165,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,3,candidate,6242545,105086290,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,3,baseline,7059219,105306539,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,4,baseline,7065247,103561156,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,4,candidate,5841496,103682171,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,4,python,19648,28979807,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,5,python,19439,27114446,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,5,candidate,6172949,103735138,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,5,baseline,7063886,105110307,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,6,baseline,7009413,102479384,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,6,candidate,5793547,103523986,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,6,python,22925,28183747,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,7,python,20004,27369435,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,7,candidate,5707313,104583106,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,7,baseline,7026616,105714667,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,8,baseline,7107288,103416281,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,8,candidate,5745148,102484618,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,5,8,python,21740,28651150,32d6d3ce8971ddfdb082cfd5aed7adde61e69b303c46db1c4e95624cf1176f39 +binary_trees,6,0,baseline,12435929,109345027,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,candidate,9662148,108338062,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,0,python,40777,27584732,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,python,36768,26736442,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,candidate,9663360,107523842,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,1,baseline,12600280,109568001,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,baseline,12500266,109610643,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,candidate,9662747,106162721,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,2,python,37189,27332475,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,python,36579,26936941,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,candidate,9686720,105896730,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,3,baseline,13074015,111264695,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,baseline,12486350,111750512,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,candidate,9649352,109462105,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,4,python,38434,27403897,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,python,36750,27418381,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,candidate,9626239,109551107,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,5,baseline,12514034,111388931,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,baseline,12379559,112149792,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,candidate,10113450,109754132,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,6,python,36878,29008015,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,python,36139,26917390,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,candidate,10267808,107875406,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,7,baseline,12541397,111447181,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,baseline,12425180,109628800,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,candidate,10371083,111710305,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +binary_trees,6,8,python,36276,28753991,5d8b3e9bc3326bd9a34048e69bd30c29a86c86823a0b62f29eb67da1c04b0162 +hash_table,50,0,baseline,3094626,100442847,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,0,candidate,2471181,98697970,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,0,python,30036,27594572,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,1,python,28325,26948426,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,1,candidate,2467250,99247495,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,1,baseline,3544943,100981154,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,2,baseline,3082549,101510942,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,2,candidate,2456850,100069938,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,2,python,55358,29185526,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,3,python,23922,26659134,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,3,candidate,2447792,96965149,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,3,baseline,3081398,99262799,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,4,baseline,3082266,99774045,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,4,candidate,2454926,96584792,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,4,python,26616,27657046,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,5,python,24515,26341083,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,5,candidate,2420494,97139950,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,5,baseline,3088567,97850977,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,6,baseline,3509090,100026169,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,6,candidate,2784059,98679577,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,6,python,25825,27465266,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,7,python,23908,26575272,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,7,candidate,2479239,97315514,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,7,baseline,3061797,98232648,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,8,baseline,3046562,97345171,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,8,candidate,2420086,95846150,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,50,8,python,24699,28126134,534f26346b78aed17647b77c689c4ed4b53881de4346829f9690eaa89c2c0c9f +hash_table,100,0,baseline,5437910,102002851,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,0,candidate,4787736,102074044,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,0,python,43846,27925838,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,1,python,44887,27147415,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,1,candidate,4150930,99396830,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,1,baseline,5341857,100578029,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,2,baseline,5397593,100446997,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,2,candidate,4118968,103039050,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,2,python,44803,27610400,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,3,python,45514,26842451,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,3,candidate,4381590,102615667,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,3,baseline,5338554,100971675,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,4,baseline,5926435,103313759,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,4,candidate,4173198,98938542,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,4,python,50657,28844329,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,5,python,44542,27032208,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,5,candidate,5630869,100793643,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,5,baseline,5368899,100971112,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,6,baseline,5359155,101051933,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,6,candidate,4163491,101130853,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,6,python,45376,28229734,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,7,python,44882,26543783,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,7,candidate,4149814,100231310,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,7,baseline,5323132,103792599,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,8,baseline,5399661,100254792,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,8,candidate,4175124,99452496,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,100,8,python,49147,27752753,b67894bb468f16ded86bee6fade4fcbcaf50aaf94c9849bfe8541008ed99fcf2 +hash_table,200,0,baseline,10730320,106794996,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,candidate,8357374,104572424,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,0,python,88178,27570231,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,python,87365,27238836,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,candidate,7688513,102853828,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,1,baseline,10842215,109922660,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,baseline,10474930,108098130,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,candidate,7769009,105578348,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,2,python,92267,28718415,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,python,109675,26912672,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,candidate,7743539,104076201,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,3,baseline,10180142,106197590,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,baseline,10164808,106028530,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,candidate,7720532,102470198,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,4,python,84155,27624529,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,python,86602,26659568,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,candidate,7642651,102595816,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,5,baseline,10119578,104951931,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,baseline,10288658,105878879,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,candidate,7748810,103648362,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,6,python,89417,28003503,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,python,118595,26250329,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,candidate,7668029,103253135,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,7,baseline,11475070,107601529,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,baseline,10122076,106746234,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,candidate,8319654,104633542,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +hash_table,200,8,python,94701,27827513,1824beb8467dae5ea4347a7ff5833ed2278394a395b0bcc815eb6ceec959eafa +matmul,4,0,baseline,2137304,100380429,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,0,candidate,1677282,98191156,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,0,python,16568,27329791,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,1,python,14618,27354665,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,1,candidate,1685217,98937454,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,1,baseline,2116652,99564446,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,2,baseline,2085469,101471759,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,2,candidate,1692584,99397118,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,2,python,16223,27989874,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,3,python,14829,27194521,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,3,candidate,1671409,100016960,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,3,baseline,2127695,104154965,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,4,baseline,2107294,101472739,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,4,candidate,1704485,104208463,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,4,python,17860,28563230,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,5,python,17103,26482991,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,5,candidate,1714479,100896474,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,5,baseline,2160703,104793176,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,6,baseline,2327163,101768699,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,6,candidate,1672225,103220263,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,6,python,15583,28845483,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,7,python,15491,28037987,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,7,candidate,1721728,100600346,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,7,baseline,2114521,100369571,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,8,baseline,2123386,100302262,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,8,candidate,1683606,98762093,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,4,8,python,17274,27437306,86be758fcccecfe5bee7b91689e53553762e135857011298401fe364b85fad86 +matmul,6,0,baseline,5223512,101931202,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,0,candidate,3915117,99794106,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,0,python,42712,27650985,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,1,python,40799,26673068,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,1,candidate,4147716,101410519,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,1,baseline,5199066,101595835,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,2,baseline,5249338,101967928,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,2,candidate,3969918,101582558,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,2,python,43246,27767135,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,3,python,43011,27392273,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,3,candidate,4012677,101640698,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,3,baseline,5285944,104325573,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,4,baseline,5306068,104609661,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,4,candidate,4014715,102360935,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,4,python,43849,27785295,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,5,python,55260,26421522,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,5,candidate,3919793,101088454,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,5,baseline,5293821,103678242,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,6,baseline,5736907,104016770,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,6,candidate,3955856,103292536,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,6,python,49611,27008081,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,7,python,43075,26482268,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,7,candidate,4009792,100802776,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,7,baseline,5210197,104273691,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,8,baseline,5277375,103664112,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,8,candidate,3922930,101595661,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,6,8,python,41129,27932234,de024dfc74222181d25753e6e430f8c7df57c24436ee0b2881b7fc076a14435e +matmul,8,0,baseline,10893664,110211806,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,candidate,8018960,105838933,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,0,python,94965,27654447,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,python,91971,26856167,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,candidate,8013230,105912903,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,1,baseline,10909405,109075185,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,baseline,10915591,108927298,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,candidate,8039356,107577307,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,2,python,93820,27900172,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,python,89072,26857923,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,candidate,8781452,106998105,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,3,baseline,11514118,110382266,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,baseline,11318035,111665275,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,candidate,8191959,109351113,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,4,python,92538,28255419,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,python,101017,27113449,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,candidate,8209258,108324640,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,5,baseline,11069365,111354070,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,baseline,10985676,109870582,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,candidate,7998405,105891224,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,6,python,113439,28001435,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,python,96804,27011563,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,candidate,8067041,105513689,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,7,baseline,10818639,110082318,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,baseline,10867303,109652902,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,candidate,8169992,106672240,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +matmul,8,8,python,107790,27929159,844f921e886400b752918cb589a968b79c70bcc86adae00d6cf544ac7d0aa17b +k_nucleotide,3,0,baseline,6657295,102692775,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,0,candidate,5356703,101123818,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,0,python,27416,27747420,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,1,python,29212,26660260,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,1,candidate,5451615,101051579,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,1,baseline,6656801,103188495,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,2,baseline,6677003,102607494,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,2,candidate,5351380,100821223,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,2,python,31135,27453662,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,3,python,28163,27078573,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,3,candidate,5386506,100191869,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,3,baseline,6527017,101573396,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,4,baseline,6636399,101219890,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,4,candidate,5355047,99718672,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,4,python,27397,27117826,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,5,python,29057,25978172,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,5,candidate,5376576,99969942,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,5,baseline,6624680,101518245,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,6,baseline,6703604,101269376,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,6,candidate,5425597,99659176,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,6,python,30746,27064166,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,7,python,31475,26261697,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,7,candidate,5306552,99504745,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,7,baseline,6569714,100970170,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,8,baseline,6559490,101265449,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,8,candidate,5357302,100732616,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,3,8,python,29673,27415103,18d17323f854b0023571f0ba2e70910f85adcacf0bc9ff5f33f908f38be57363 +k_nucleotide,5,0,baseline,11793534,106558019,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,0,candidate,9866088,104393198,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,0,python,47740,27363357,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,1,python,54392,26216536,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,1,candidate,10156089,105917037,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,1,baseline,12205964,110210732,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,2,baseline,11928595,107341459,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,2,candidate,10031671,105447101,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,2,python,46510,28159932,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,3,python,49489,26952811,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,3,candidate,10067333,106776246,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,3,baseline,11893921,108445443,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,4,baseline,11810976,108572627,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,4,candidate,9850479,105144802,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,4,python,45578,27596310,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,5,python,46661,26650383,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,5,candidate,9857382,104719948,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,5,baseline,11819241,107592469,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,6,baseline,12048272,106921757,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,6,candidate,9897124,105586948,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,6,python,50806,27702377,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,7,python,47135,26549912,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,7,candidate,9893719,105428124,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,7,baseline,11837580,107738436,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,8,baseline,12009109,107720036,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,8,candidate,9949032,105364098,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,5,8,python,45227,27620921,d73707ed209cd62dd7398e7c608b8a897379ba92340f9ac3cc977744b656fa78 +k_nucleotide,8,0,baseline,21663772,116574559,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,candidate,18426692,115180331,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,0,python,70030,28283234,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,python,70394,26985440,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,candidate,18632062,114462176,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,1,baseline,21129916,115970042,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,baseline,21161865,116072157,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,candidate,18577384,112943550,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,2,python,79154,27675622,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,python,69841,26267281,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,candidate,18612732,112578504,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,3,baseline,21320999,116405777,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,baseline,21149625,118008734,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,candidate,18404333,112893074,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,4,python,69788,27160892,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,python,71218,26341081,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,candidate,18548396,113013618,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,5,baseline,21638178,116461559,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,baseline,21352717,116354794,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,candidate,18577584,113399155,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,6,python,69705,27262599,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,python,69183,26489691,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,candidate,18538404,112478531,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,7,baseline,21297402,116630578,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,baseline,21812965,119300188,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,candidate,18607992,115726943,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 +k_nucleotide,8,8,python,71398,27679793,9e0cce054f5f95900308290d746fbbac4dc5ea112ff48d7e6f2705cc69a52c68 diff --git a/bench/experiments/20261008-default-runtime/summary.json b/bench/experiments/20261008-default-runtime/summary.json new file mode 100644 index 00000000..29600555 --- /dev/null +++ b/bench/experiments/20261008-default-runtime/summary.json @@ -0,0 +1,489 @@ +{ + "points": [ + { + "case": "iops", + "scale": 500, + "medians_ns": { + "baseline": 5095687, + "candidate": 3572894, + "python": 26378 + }, + "wall_medians_ns": { + "baseline": 99727453, + "candidate": 98212648, + "python": 27509358 + }, + "speedup": 1.4262071586786509, + "python_ratio": 135.44976874668285 + }, + { + "case": "iops", + "scale": 1000, + "medians_ns": { + "baseline": 9883273, + "candidate": 6871473, + "python": 49516 + }, + "wall_medians_ns": { + "baseline": 104736969, + "candidate": 102078410, + "python": 27500610 + }, + "speedup": 1.4383048583615188, + "python_ratio": 138.77278051538897 + }, + { + "case": "iops", + "scale": 2000, + "medians_ns": { + "baseline": 19547219, + "candidate": 13465950, + "python": 95102 + }, + "wall_medians_ns": { + "baseline": 113446713, + "candidate": 108171773, + "python": 27215694 + }, + "speedup": 1.45160341453815, + "python_ratio": 141.59481398919056 + }, + { + "case": "prime_sieve", + "scale": 50, + "medians_ns": { + "baseline": 9432206, + "candidate": 7638717, + "python": 36014 + }, + "wall_medians_ns": { + "baseline": 105157616, + "candidate": 103304801, + "python": 27511386 + }, + "speedup": 1.2347892977315431, + "python_ratio": 212.10409840617538 + }, + { + "case": "prime_sieve", + "scale": 75, + "medians_ns": { + "baseline": 17254278, + "candidate": 13357011, + "python": 58648 + }, + "wall_medians_ns": { + "baseline": 111903328, + "candidate": 107506639, + "python": 27267817 + }, + "speedup": 1.291776880321503, + "python_ratio": 227.74878938753238 + }, + { + "case": "prime_sieve", + "scale": 100, + "medians_ns": { + "baseline": 24437457, + "candidate": 18608670, + "python": 79467 + }, + "wall_medians_ns": { + "baseline": 119952077, + "candidate": 112873942, + "python": 27698980 + }, + "speedup": 1.3132296397324472, + "python_ratio": 234.16852278304202 + }, + { + "case": "fib", + "scale": 8, + "medians_ns": { + "baseline": 12678169, + "candidate": 12483084, + "python": 10181 + }, + "wall_medians_ns": { + "baseline": 106079174, + "candidate": 105894932, + "python": 27084533 + }, + "speedup": 1.0156279489908102, + "python_ratio": 1226.115705726353 + }, + { + "case": "fib", + "scale": 9, + "medians_ns": { + "baseline": 20305737, + "candidate": 19990749, + "python": 14737 + }, + "wall_medians_ns": { + "baseline": 113594789, + "candidate": 113185676, + "python": 27043726 + }, + "speedup": 1.0157566882561528, + "python_ratio": 1356.5005767795344 + }, + { + "case": "fib", + "scale": 10, + "medians_ns": { + "baseline": 32645010, + "candidate": 32081291, + "python": 19214 + }, + "wall_medians_ns": { + "baseline": 126975846, + "candidate": 125518934, + "python": 27379976 + }, + "speedup": 1.0175715808942976, + "python_ratio": 1669.683095659415 + }, + { + "case": "nqueens", + "scale": 4, + "medians_ns": { + "baseline": 10111359, + "candidate": 9977752, + "python": 20816 + }, + "wall_medians_ns": { + "baseline": 104743171, + "candidate": 104030943, + "python": 27266696 + }, + "speedup": 1.0133904911647433, + "python_ratio": 479.33089930822445 + }, + { + "case": "nqueens", + "scale": 5, + "medians_ns": { + "baseline": 30318826, + "candidate": 29927687, + "python": 38637 + }, + "wall_medians_ns": { + "baseline": 124640174, + "candidate": 124356945, + "python": 27484725 + }, + "speedup": 1.0130694697522065, + "python_ratio": 774.5861997567099 + }, + { + "case": "nqueens", + "scale": 6, + "medians_ns": { + "baseline": 86382193, + "candidate": 84609956, + "python": 80527 + }, + "wall_medians_ns": { + "baseline": 181908219, + "candidate": 179174882, + "python": 27385357 + }, + "speedup": 1.0209459629077222, + "python_ratio": 1050.7029443540675 + }, + { + "case": "quicksort", + "scale": 32, + "medians_ns": { + "baseline": 6281183, + "candidate": 4928966, + "python": 22368 + }, + "wall_medians_ns": { + "baseline": 103286174, + "candidate": 101787799, + "python": 27022649 + }, + "speedup": 1.2743409063888855, + "python_ratio": 220.35792203147352 + }, + { + "case": "quicksort", + "scale": 64, + "medians_ns": { + "baseline": 12660595, + "candidate": 9534055, + "python": 45767 + }, + "wall_medians_ns": { + "baseline": 110886694, + "candidate": 107827582, + "python": 27263196 + }, + "speedup": 1.327933916890557, + "python_ratio": 208.31723731072606 + }, + { + "case": "quicksort", + "scale": 128, + "medians_ns": { + "baseline": 26923323, + "candidate": 19873134, + "python": 87830 + }, + "wall_medians_ns": { + "baseline": 126235200, + "candidate": 118217299, + "python": 27463927 + }, + "speedup": 1.3547597978255468, + "python_ratio": 226.26817716042353 + }, + { + "case": "binary_search", + "scale": 16, + "medians_ns": { + "baseline": 10260807, + "candidate": 9786958, + "python": 13241 + }, + "wall_medians_ns": { + "baseline": 106102489, + "candidate": 104886262, + "python": 27329981 + }, + "speedup": 1.0484163720739377, + "python_ratio": 739.1403972509629 + }, + { + "case": "binary_search", + "scale": 32, + "medians_ns": { + "baseline": 20708502, + "candidate": 19551900, + "python": 25296 + }, + "wall_medians_ns": { + "baseline": 116831436, + "candidate": 114979176, + "python": 27444115 + }, + "speedup": 1.059155478495696, + "python_ratio": 772.9245730550284 + }, + { + "case": "binary_search", + "scale": 64, + "medians_ns": { + "baseline": 42733665, + "candidate": 40021326, + "python": 47491 + }, + "wall_medians_ns": { + "baseline": 138584320, + "candidate": 135185882, + "python": 26993553 + }, + "speedup": 1.067772342175769, + "python_ratio": 842.7139036870144 + }, + { + "case": "binary_trees", + "scale": 4, + "medians_ns": { + "baseline": 4322839, + "candidate": 3661827, + "python": 12099 + }, + "wall_medians_ns": { + "baseline": 100421915, + "candidate": 100372997, + "python": 27060416 + }, + "speedup": 1.1805142624160017, + "python_ratio": 302.6553434168113 + }, + { + "case": "binary_trees", + "scale": 5, + "medians_ns": { + "baseline": 7059219, + "candidate": 5841496, + "python": 20207 + }, + "wall_medians_ns": { + "baseline": 104121799, + "candidate": 103809158, + "python": 27484203 + }, + "speedup": 1.2084608120933404, + "python_ratio": 289.08279309150294 + }, + { + "case": "binary_trees", + "scale": 6, + "medians_ns": { + "baseline": 12500266, + "candidate": 9663360, + "python": 36768 + }, + "wall_medians_ns": { + "baseline": 111264695, + "candidate": 108338062, + "python": 27403897 + }, + "speedup": 1.2935734568514472, + "python_ratio": 262.81984334203656 + }, + { + "case": "hash_table", + "scale": 50, + "medians_ns": { + "baseline": 3082549, + "candidate": 2456850, + "python": 25825 + }, + "wall_medians_ns": { + "baseline": 99774045, + "candidate": 97315514, + "python": 27465266 + }, + "speedup": 1.2546752956020921, + "python_ratio": 95.13455953533398 + }, + { + "case": "hash_table", + "scale": 100, + "medians_ns": { + "baseline": 5368899, + "candidate": 4173198, + "python": 44887 + }, + "wall_medians_ns": { + "baseline": 100971675, + "candidate": 100793643, + "python": 27610400 + }, + "speedup": 1.2865191155559836, + "python_ratio": 92.97119433243478 + }, + { + "case": "hash_table", + "scale": 200, + "medians_ns": { + "baseline": 10288658, + "candidate": 7743539, + "python": 89417 + }, + "wall_medians_ns": { + "baseline": 106746234, + "candidate": 103648362, + "python": 27570231 + }, + "speedup": 1.3286764617573437, + "python_ratio": 86.60029971929275 + }, + { + "case": "matmul", + "scale": 4, + "medians_ns": { + "baseline": 2123386, + "candidate": 1685217, + "python": 16223 + }, + "wall_medians_ns": { + "baseline": 101471759, + "candidate": 100016960, + "python": 27437306 + }, + "speedup": 1.260007464914014, + "python_ratio": 103.87825926154225 + }, + { + "case": "matmul", + "scale": 6, + "medians_ns": { + "baseline": 5277375, + "candidate": 3969918, + "python": 43075 + }, + "wall_medians_ns": { + "baseline": 103678242, + "candidate": 101582558, + "python": 27392273 + }, + "speedup": 1.3293410594374997, + "python_ratio": 92.16292513058619 + }, + { + "case": "matmul", + "scale": 8, + "medians_ns": { + "baseline": 10915591, + "candidate": 8067041, + "python": 94965 + }, + "wall_medians_ns": { + "baseline": 110082318, + "candidate": 106672240, + "python": 27654447 + }, + "speedup": 1.3531096470192727, + "python_ratio": 84.94751750644974 + }, + { + "case": "k_nucleotide", + "scale": 3, + "medians_ns": { + "baseline": 6636399, + "candidate": 5357302, + "python": 29212 + }, + "wall_medians_ns": { + "baseline": 101518245, + "candidate": 100191869, + "python": 27078573 + }, + "speedup": 1.2387576806385006, + "python_ratio": 183.39387922771465 + }, + { + "case": "k_nucleotide", + "scale": 5, + "medians_ns": { + "baseline": 11893921, + "candidate": 9897124, + "python": 47135 + }, + "wall_medians_ns": { + "baseline": 107720036, + "candidate": 105428124, + "python": 27363357 + }, + "speedup": 1.2017552775937737, + "python_ratio": 209.97398960432798 + }, + { + "case": "k_nucleotide", + "scale": 8, + "medians_ns": { + "baseline": 21320999, + "candidate": 18577384, + "python": 70030 + }, + "wall_medians_ns": { + "baseline": 116461559, + "candidate": 113013618, + "python": 27160892 + }, + "speedup": 1.1476857559708085, + "python_ratio": 265.27750963872626 + } + ], + "geometric_mean": 1.2074650356636027, + "wall_geometric_mean": 1.021097379687905, + "minimum": 1.0130694697522065, + "maximum": 1.45160341453815, + "samples": 810 +} diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index 63499368..69a43a39 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -34,7 +34,7 @@ endif() if(NOT APPLE) enable_testing() - foreach(test_name test_getmember_siblings test_kvset_invalid_head test_pc_kvspace_source test_crash_resume test_param_address) + foreach(test_name test_getmember_siblings test_kvset_invalid_head test_pc_kvspace_source test_crash_resume test_param_address test_key_refs) add_custom_command( OUTPUT "${BIN_DIR}/${test_name}" COMMAND ${CMAKE_C_COMPILER} -O2 -D_GNU_SOURCE @@ -58,8 +58,10 @@ if(NOT APPLE) add_test(NAME crash_resume_fs COMMAND "${BIN_DIR}/test_crash_resume") add_test(NAME param_address_shm COMMAND "${BIN_DIR}/test_param_address") add_test(NAME param_address_fs COMMAND "${BIN_DIR}/test_param_address") - set_tests_properties(getmember_siblings kvset_invalid_head_shm pc_kvspace_source_shm crash_resume_shm param_address_shm + add_test(NAME key_refs_shm COMMAND "${BIN_DIR}/test_key_refs") + add_test(NAME key_refs_fs COMMAND "${BIN_DIR}/test_key_refs") + set_tests_properties(getmember_siblings kvset_invalid_head_shm pc_kvspace_source_shm crash_resume_shm param_address_shm key_refs_shm PROPERTIES ENVIRONMENT "KVSPACE_BACKEND_PATH=${KVSPACE_LIB_DIR};KVLANG_TEST_SCHEME=shm") - set_tests_properties(kvset_invalid_head_fs pc_kvspace_source_fs crash_resume_fs param_address_fs + set_tests_properties(kvset_invalid_head_fs pc_kvspace_source_fs crash_resume_fs param_address_fs key_refs_fs PROPERTIES ENVIRONMENT "KVSPACE_BACKEND_PATH=${KVSPACE_LIB_DIR};KVLANG_TEST_SCHEME=fs") endif() diff --git a/runtime/src/kvcpu.c b/runtime/src/kvcpu.c index 18d9044e..ba716469 100644 --- a/runtime/src/kvcpu.c +++ b/runtime/src/kvcpu.c @@ -546,8 +546,7 @@ static char *handle_call(kvlangKv_t *kv, const char *pc, char err[256]; kvlangKvDelTree(kv, frame_root, err, sizeof err); char *stack_fr = kvlangKeytreeStack(frame_root); - if (kvlangKvMkindex(kv, stack_fr, 0, err, sizeof err) != 0 || - kvlangKvExtIndex(kv, stack_fr, func_dir.p, err, sizeof err) != 0) { + if (kvlangKvExtIndex(kv, stack_fr, func_dir.p, err, sizeof err) != 0) { kvlangVthreadSetError(kv, vtid, pc, err); free(caller_fr); free(stack_fr); @@ -911,8 +910,7 @@ char *kvlangKvcpuBootstrap(kvlangKv_t *kv, const char *vtid, char *frame_root = kvlangKeytreeFrameAt(vtid, 1); char *stack_fr = kvlangKeytreeStack(frame_root); char err[256]; - if (kvlangKvMkindex(kv, stack_fr, 0, err, sizeof err) != 0 || - kvlangKvExtIndex(kv, stack_fr, func_dir.p, err, sizeof err) != 0) { + if (kvlangKvExtIndex(kv, stack_fr, func_dir.p, err, sizeof err) != 0) { kvlangVthreadSetError(kv, vtid, "", err); kvlangXvalueFree(&sig); kvlangStrbufFree(&sig_key); @@ -1017,6 +1015,7 @@ char *kvlangKvcpuBootstrap(kvlangKv_t *kv, const char *vtid, typedef struct { char *pc; /* NULL = 空槽 */ + char *next_pc; int depth; kvlangRwirInst_t inst; /* 自持 opcode/name/type;val 恒空 */ bool load_write_value; @@ -1053,6 +1052,7 @@ static rwir_cache_entry_t *rwir_cache_get(rwir_cache_t *c, const char *pc) { static void rwir_cache_entry_free(rwir_cache_entry_t *e) { free(e->pc); + free(e->next_pc); free(e->inst.opcode); for (int i = 0; i < e->inst.nr; i++) { free(e->inst.reads[i].name); @@ -1103,6 +1103,10 @@ static void rwir_cache_put(rwir_cache_t *c, const char *pc, int depth, else c->n++; e->pc = strdup(pc); + kvlangStrbuf_t next; + kvlangStrbufInit(&next); + kvlangRwirNextPc(pc, &next); + e->next_pc = kvlangStrbufDetach(&next); e->depth = depth; e->load_write_value = load_write_value; e->inst.opcode = strdup(inst->opcode); @@ -1115,12 +1119,16 @@ static void rwir_cache_put(rwir_cache_t *c, const char *pc, int depth, e->inst.reads[k].name = strdup(inst->reads[k].name); e->inst.reads[k].type = inst->reads[k].type ? strdup(inst->reads[k].type) : NULL; e->inst.reads[k].address = inst->reads[k].address; + e->inst.reads[k].ref = (kvlangKvRef_t){0}; + memset(e->inst.reads[k].scratch, 0, sizeof e->inst.reads[k].scratch); kvlangXvalueZero(&e->inst.reads[k].val); } for (int k = 0; k < inst->nw; k++) { e->inst.writes[k].name = strdup(inst->writes[k].name); e->inst.writes[k].type = inst->writes[k].type ? strdup(inst->writes[k].type) : NULL; e->inst.writes[k].address = inst->writes[k].address; + e->inst.writes[k].ref = (kvlangKvRef_t){0}; + memset(e->inst.writes[k].scratch, 0, sizeof e->inst.writes[k].scratch); kvlangXvalueZero(&e->inst.writes[k].val); } } @@ -1129,9 +1137,19 @@ static void rwir_cache_put(rwir_cache_t *c, const char *pc, int depth, static void rwir_cache_drop(rwir_cache_t *c, int floor, bool inclusive) { for (size_t i = 0; i < c->cap; i++) { rwir_cache_entry_t *e = &c->slot[i]; - if (e->pc && (inclusive ? e->depth >= floor : e->depth > floor)) { + while (e->pc && (inclusive ? e->depth >= floor : e->depth > floor)) { rwir_cache_entry_free(e); c->n--; + /* Preserve probe chains when deleting a frame's metadata. */ + size_t hole = i, mask = c->cap - 1; + for (size_t j = (i + 1) & mask; c->slot[j].pc; j = (j + 1) & mask) { + size_t home = rwir_cache_hash(c->slot[j].pc) & mask; + if (((j - home) & mask) >= ((j - hole) & mask)) { + c->slot[hole] = c->slot[j]; + hole = j; + } + } + c->slot[hole] = (rwir_cache_entry_t){0}; } } } @@ -1146,26 +1164,36 @@ static void rwir_cache_free(rwir_cache_t *c) { /* 命中后按 name 现读值:缓存只存派生数据,值必须每步回 KVSpace 取。 * 读参恒取值;写参与 decode 一致——仅 obj/map 指令取值。 */ +/* Snapshot inputs for one instruction without allocating small values. */ +static void rwir_param_snapshot(kvlangParam_t *p) { + if (p->val.data && p->val.borrowed && p->val.len <= sizeof p->scratch) { + memcpy(p->scratch, p->val.data, p->val.len); + p->val.data = p->scratch; + } else { + kvlangXvalueMaterialize(&p->val); + } +} + static int rwir_cache_load_vals(kvlangKv_t *kv, kvlangRwirInst_t *inst, bool load_write_value, char *err, uint32_t err_cap) { for (int i = 0; i < inst->nr; i++) { kvlangParam_t *p = &inst->reads[i]; - if (kvlangKvGetOne(kv, p->name, &p->val) != 0) { + if (kvlangKvGetOneRef(kv, p->name, &p->ref, &p->val) != 0) { snprintf(err, err_cap, "Decode: cannot read target for %s", p->name); return -1; } - kvlangXvalueMaterialize(&p->val); + rwir_param_snapshot(p); } if (load_write_value) { for (int i = 0; i < inst->nw; i++) { kvlangParam_t *p = &inst->writes[i]; - if (kvlangKvGetOne(kv, p->name, &p->val) != 0) { + if (kvlangKvGetOneRef(kv, p->name, &p->ref, &p->val) != 0) { snprintf(err, err_cap, "Decode: cannot read target for %s", p->name); return -1; } - kvlangXvalueMaterialize(&p->val); + rwir_param_snapshot(p); } } return 0; @@ -1177,10 +1205,14 @@ static void rwir_inst_release(kvlangRwirInst_t *inst, bool from_cache) { kvlangRwirInstFree(inst); return; } - for (int i = 0; i < inst->nr; i++) + for (int i = 0; i < inst->nr; i++) { + memset(inst->reads[i].scratch, 0, sizeof inst->reads[i].scratch); kvlangXvalueFree(&inst->reads[i].val); - for (int i = 0; i < inst->nw; i++) + } + for (int i = 0; i < inst->nw; i++) { + memset(inst->writes[i].scratch, 0, sizeof inst->writes[i].scratch); kvlangXvalueFree(&inst->writes[i].val); + } } int kvlangKvcpuExecuteMode(kvlangKv_t *kv, const char *pc, kvmode_t mode, @@ -1208,18 +1240,19 @@ int kvlangKvcpuExecuteMode(kvlangKv_t *kv, const char *pc, kvmode_t mode, char *cur_frame = NULL; /* fr_stk,或超长帧根的 malloc 回退 */ rwir_cache_t cache = {0}; int last_depth = 0; /* 0 = 尚未进入任何帧 */ + kvlangKvRef_t pc_ref = {0}, status_ref = {0}; int rc = 0; for (;;) { /* Release borrowed values from the previous instruction. */ kvlangKvReadReset(kv); - if (!kvlangVthreadMemberGetBuf(kv, pc_key.p, &cur_b) || !cur_b.p[0]) { + if (!kvlangVthreadMemberGetBuf(kv, pc_key.p, &pc_ref, &cur_b) || !cur_b.p[0]) { rc = -1; break; } const char *cur = cur_b.p; /* Observe external status changes on every step. */ - if (!kvlangVthreadMemberGetBuf(kv, st_key.p, &status_b)) + if (!kvlangVthreadMemberGetBuf(kv, st_key.p, &status_ref, &status_b)) break; const char *status = status_b.p; if (strcmp(status, "init") != 0 && strcmp(status, "running") != 0 && @@ -1317,6 +1350,9 @@ int kvlangKvcpuExecuteMode(kvlangKv_t *kv, const char *pc, kvmode_t mode, f.pc_key = pc_key.p; f.status_key = st_key.p; f.status_known = status; /* 本步开始前读到的 ‥status(源值,借用) */ + f.next_pc = hit ? hit->next_pc : NULL; + f.pc_ref = &pc_ref; + f.cached_targets = from_cache; exec_err = kvlangBuiltinNative(&f); if (f.persist_failed) exec_err = -1; @@ -1377,6 +1413,7 @@ int kvlangKvcpuExecuteMode(kvlangKv_t *kv, const char *pc, kvmode_t mode, ci.writes = inst->writes; kvlangFrame_t cf = {kv, vtid, cur, &ci, NULL}; cf.pc_key = pc_key.p; + cf.pc_ref = &pc_ref; cf.status_key = st_key.p; cf.status_known = status; exec_err = kvlangCtlCall(&cf); diff --git a/runtime/src/kvspace.c b/runtime/src/kvspace.c index 74c11f9d..5b29069e 100644 --- a/runtime/src/kvspace.c +++ b/runtime/src/kvspace.c @@ -35,6 +35,26 @@ int kvlangKvGetOne(kvlangKv_t *k, const char *key, kvlangXvalue_t *out) { return 0; } +/* Cache addresses only; missing local values still use normal resolution. */ +int kvlangKvGetOneRef(kvlangKv_t *k, const char *key, kvlangKvRef_t *ref, + kvlangXvalue_t *out) { + if (!ref->attempted) { + ref->resolved = kvspaceResolveRef(k->h, key, &ref->ref) == 0; + ref->attempted = true; + } + if (!ref->resolved) + return kvlangKvGetOne(k, key, out); + kvlangXvalueZero(out); + uint8_t *data = NULL; + uint32_t len = 0; + if (kvspaceGetByRef(k->h, &ref->ref, NULL, &data, &len) != 0) + return -1; + if (!data || !len) + return kvlangKvGetOne(k, key, out); + *out = (kvlangXvalue_t){data, len, 1}; + return 0; +} + int kvlangKvGetMember(kvlangKv_t *k, const char *dir, const char *name, kvlangXvalue_t *out) { kvlangXvalueZero(out); @@ -101,13 +121,32 @@ int kvlangKvSet(kvlangKv_t *k, const kvlangKvPair_t *pairs, int n, char *err, ui } int kvlangKvSetChar(kvlangKv_t *k, const char *key, const char *s) { + return kvlangKvSetCharRef(k, key, NULL, s); +} + +int kvlangKvSetOneRef(kvlangKv_t *k, const char *key, kvlangKvRef_t *ref, + const kvlangXvalue_t *value, char *err, uint32_t err_cap) { + if (ref && kvspaceSetValueByRef && !kvlangXvalueNone(value)) { + if (!ref->attempted) { + ref->resolved = kvspaceResolveRef(k->h, key, &ref->ref) == 0; + ref->attempted = true; + } + if (ref->resolved) + return kvspaceSetValueByRef(k->h, &ref->ref, key, value->data, + value->len, 0, 0, err, err_cap); + } + kvlangKvPair_t pair = {(char *)key, *value}; + return kvlangKvSet(k, &pair, 1, err, err_cap); +} + +int kvlangKvSetCharRef(kvlangKv_t *k, const char *key, kvlangKvRef_t *ref, + const char *s) { kvlangXvalue_t value; kvlangXvalueNewCharUtf8(&value, s); if (!value.data || value.len == 0) return -1; - kvlangKvPair_t pair = {(char *)key, value}; char err[256]; - int rc = kvlangKvSet(k, &pair, 1, err, sizeof err); + int rc = kvlangKvSetOneRef(k, key, ref, &value, err, sizeof err); kvlangXvalueFree(&value); return rc; } diff --git a/runtime/src/runtime_internal.h b/runtime/src/runtime_internal.h index 09887b89..49f2ddae 100644 --- a/runtime/src/runtime_internal.h +++ b/runtime/src/runtime_internal.h @@ -33,9 +33,23 @@ extern void kvspaceClose(void *h); /* 借用读:*out 指向后端常驻/回收空间,调用方不得 free。resolve=1 穿透 link。 */ extern int kvspaceGet(void *h, const char *key, int resolve, uint8_t **out, uint32_t *out_len); +typedef struct { + uint32_t block_id, gen, parent_id, depth; +} kvspaceRef_t; +typedef struct { + kvspaceRef_t ref; + bool attempted, resolved; +} kvlangKvRef_t; +extern int kvspaceResolveRef(void *h, const char *key, kvspaceRef_t *ref); +extern int kvspaceGetByRef(void *h, kvspaceRef_t *ref, const char *key, + uint8_t **out, uint32_t *out_len); extern int kvspaceSetValue(void *h, const char *key, const uint8_t *value, uint32_t value_len, uint8_t ro, uint32_t vid, char *err, uint32_t err_cap); +extern int kvspaceSetValueByRef(void *h, kvspaceRef_t *ref, const char *key, + const uint8_t *value, uint32_t value_len, + uint8_t ro, uint32_t vid, char *err, + uint32_t err_cap) __attribute__((weak)); /* 指令边界回收读借用池;定位读/写(分片);只读 head 前缀。见 kvspace.h 契约。 */ extern void kvspaceReadReset(void *h); @@ -187,8 +201,9 @@ static inline uint64_t xh_b(const uint8_t *d) { return xh_rd64(d + 10); } static inline bool kvlangXvalueNone(const kvlangXvalue_t *v) { if (!v->data || v->len == 0) return true; - /* flags 无 class/ptr 位 且 langtype 首字节为 0 ⇒ langtype 长度 0 ⇒ None。 */ - return xh_is_none(v->data); + /* None has a complete 32-byte scalar head and zero counts. */ + return v->len == 32 && v->data[0] == 5 && xh_is_none(v->data) && + xh_a(v->data) == 0 && xh_b(v->data) == 0; } static inline void kvlangXvalueZero(kvlangXvalue_t *v) { v->data = NULL; @@ -393,6 +408,12 @@ void kvlangFormatFloat(char *out, size_t cap, double v); /* ── KV 操作(封装 durable ABI)────────────────────────────────────── */ kvlangKv_t *kvlangKvConnect(const char *dsn); +int kvlangKvGetOneRef(kvlangKv_t *k, const char *key, kvlangKvRef_t *ref, + kvlangXvalue_t *out); +int kvlangKvSetOneRef(kvlangKv_t *k, const char *key, kvlangKvRef_t *ref, + const kvlangXvalue_t *value, char *err, uint32_t err_cap); +int kvlangKvSetCharRef(kvlangKv_t *k, const char *key, kvlangKvRef_t *ref, + const char *value); void kvlangKvDisconnect(kvlangKv_t *k); int kvlangKvGetOne(kvlangKv_t *k, const char *key, kvlangXvalue_t *out); /* None → out len=0 */ @@ -504,6 +525,8 @@ typedef struct { char *type; int address; kvlangXvalue_t val; + kvlangKvRef_t ref; + uint8_t scratch[64]; } kvlangParam_t; typedef struct { @@ -537,7 +560,7 @@ void kvlangVthreadPcGet(kvlangKv_t *kv, const char *vtid, char **pc); void kvlangVthreadStatusGet(kvlangKv_t *kv, const char *vtid, char **status); /* 复用调用方 strbuf 读成员值;false = 键缺失 / None。 */ bool kvlangVthreadMemberGetBuf(kvlangKv_t *kv, const char *key, - kvlangStrbuf_t *out); + kvlangKvRef_t *ref, kvlangStrbuf_t *out); int kvlangVthreadSet(kvlangKv_t *kv, const char *vtid, const char *pc, const char *status); int kvlangVthreadSetDone(kvlangKv_t *kv, const char *vtid, const char *ret); @@ -558,6 +581,9 @@ typedef struct { bool persist_failed; const char *pc_key; const char *status_key; + const char *next_pc; + kvlangKvRef_t *pc_ref; + bool cached_targets; } kvlangFrame_t; /* Write PC to kvspace; write status when it changes. */ diff --git a/runtime/src/rwir_decode.c b/runtime/src/rwir_decode.c index 5687ce2f..8f458595 100644 --- a/runtime/src/rwir_decode.c +++ b/runtime/src/rwir_decode.c @@ -89,20 +89,21 @@ static int materialize_operand(kvlangKv_t *kv, const char *link_base, target = kvlangBuiltinResolveWriteSlot(kv, frame_root, name); free(name); if (target && (!type || strcmp(type, "any") != 0)) { - kvspaceHead_t actual; - if (kvlangKvGetHead(kv, target, &actual) == 0 && - actual.langtype_len > 0 && - (size_t)actual.langtype_len <= sizeof actual.langtype) { - char *actual_type = strndup((const char *)actual.langtype, - (size_t)actual.langtype_len); - if (!actual_type) { - snprintf(err, err_cap, "Decode: out of memory"); - free(target); + uint8_t *data = NULL; + uint32_t len = 0; + if (kvspaceGet(kv->h, target, 1, &data, &len) == 0 && data && len) { + uint32_t type_len = xh_langtype_len(data); + if (type_len > 0 && type_len <= 256) { + char *actual_type = strndup((const char *)xh_langtype(data), type_len); + if (!actual_type) { + snprintf(err, err_cap, "Decode: out of memory"); + free(target); + free(type); + return -1; + } free(type); - return -1; + type = actual_type; } - free(type); - type = actual_type; } } } else { diff --git a/runtime/src/rwir_func.c b/runtime/src/rwir_func.c index 2c303a58..a8a743e0 100644 --- a/runtime/src/rwir_func.c +++ b/runtime/src/rwir_func.c @@ -188,6 +188,10 @@ int kvlangBuiltinReadInputs(kvlangFrame_t *f, kvlangXvalue_t *out, int cap) { void kvlangBuiltinFreeInputs(kvlangXvalue_t *in, int n) { for (int i = 0; i < n; i++) kvlangXvalueFree(&in[i]); } void kvlangBuiltinNextPc(kvlangFrame_t *f) { + if (f->next_pc) { + kvlangVthreadAdvance(f, f->next_pc, "running"); + return; + } char buf[512]; if (kvlangRwirNextPcBuf(f->pc, buf, sizeof buf)) { kvlangVthreadAdvance(f, buf, "running"); @@ -204,12 +208,17 @@ int kvlangBuiltinWriteResult(kvlangFrame_t *f, const kvlangXvalue_t *result) { char *owned = NULL; const char *fr = f->frame_root; if (!fr) { owned = kvlangKeytreeFrameRoot(f->pc); fr = owned; } - char *key = kvlangBuiltinResolveWriteSlot(f->kv, fr, f->inst->writes[0].name); + const char *name = f->inst->writes[0].name; + char *key = name[0] == '/' ? NULL : kvlangBuiltinResolveWriteSlot(f->kv, fr, name); free(owned); - kvlangKvPair_t pair = { key, *result }; char err[256]; - kvlangKvSet(f->kv, &pair, 1, err, sizeof err); + int rc = kvlangKvSetOneRef(f->kv, key ? key : name, + f->cached_targets && name[0] == '/' + ? &f->inst->writes[0].ref : NULL, result, + err, sizeof err); free(key); + if (rc != 0) + return kvlangBuiltinSetErr(f, "%s", err); } kvlangBuiltinNextPc(f); return 0; diff --git a/runtime/src/vthread.c b/runtime/src/vthread.c index 6dce446d..be104d35 100644 --- a/runtime/src/vthread.c +++ b/runtime/src/vthread.c @@ -19,11 +19,12 @@ VT_MEMBER_GET(kvlangVthreadStatusGet, true) /* 复用缓冲版:把 key 的成员值读进调用方 strbuf(容量跨步保留),免每步 strdup + free。 * 返回 false = 键缺失或 None(out 清空)。供执行循环每步读 pc / status。 */ -bool kvlangVthreadMemberGetBuf(kvlangKv_t *kv, const char *key, kvlangStrbuf_t *out) { +bool kvlangVthreadMemberGetBuf(kvlangKv_t *kv, const char *key, + kvlangKvRef_t *ref, kvlangStrbuf_t *out) { kvlangStrbufClear(out); kvlangXvalue_t v; kvlangXvalueZero(&v); - if (kvlangKvGetOne(kv, key, &v) != 0) + if (kvlangKvGetOneRef(kv, key, ref, &v) != 0) return false; if (kvlangXvalueNone(&v)) { kvlangXvalueFree(&v); @@ -68,7 +69,7 @@ void kvlangVthreadAdvance(kvlangFrame_t *f, const char *pc, const char *status) kvlangStrbufInit(&k1); kvlangStrbufInit(&k2); if (!f->pc_key) kvlangKeytreeVthreadPc(f->vtid, &k1); - if (kvlangKvSetChar(f->kv, f->pc_key ? f->pc_key : k1.p, pc) != 0) + if (kvlangKvSetCharRef(f->kv, f->pc_key ? f->pc_key : k1.p, f->pc_ref, pc) != 0) f->persist_failed = true; if (!f->persist_failed && (!f->status_known || strcmp(f->status_known, status) != 0)) { diff --git a/runtime/tests/test_key_refs.c b/runtime/tests/test_key_refs.c new file mode 100644 index 00000000..2f943a2a --- /dev/null +++ b/runtime/tests/test_key_refs.c @@ -0,0 +1,139 @@ +#include "rwir_internal.h" + +#define CHECK(c) do { if (!(c)) { fprintf(stderr, "%d: %s\n", __LINE__, #c); return 1; } } while (0) + +static int put(kvlangKv_t *kv, const char *key, kvlangXvalue_t *value) { + kvlangKvPair_t pair = {(char *)key, *value}; + char err[256]; + return kvlangKvSet(kv, &pair, 1, err, sizeof err); +} + +static int put_i64(kvlangKv_t *kv, const char *key, int64_t n) { + kvlangXvalue_t value; + kvlangXvalueNewInt64(&value, n); + int rc = put(kv, key, &value); + kvlangXvalueFree(&value); + return rc; +} + +static int64_t read_i64(kvlangKv_t *kv, const char *key, kvlangKvRef_t *ref) { + kvlangXvalue_t value; + if (kvlangKvGetOneRef(kv, key, ref, &value) != 0) + return -1; + int64_t n = kvlangScalarI64(kvlangXvalueScalar(&value)); + kvlangXvalueFree(&value); + return n; +} + +static bool rejects_result(kvlangFrame_t *frame, kvlangKv_t *observer, + uint8_t *data, uint32_t len) { + kvlangXvalue_t value = {data, len, 1}; + if (kvlangBuiltinWriteResult(frame, &value) == 0) + return false; + char *pc = NULL; + kvlangVthreadPcGet(observer, frame->vtid, &pc); + bool unchanged = pc && strcmp(pc, frame->pc) == 0; + free(pc); + kvlangKvRef_t ref = {0}; + return unchanged && read_i64(observer, "/b", &ref) == 7; +} + +int main(void) { + char dir[] = "/tmp/kvlang-key-refs-XXXXXX", dsn[256], err[256]; + CHECK(mkdtemp(dir)); + const char *scheme = getenv("KVLANG_TEST_SCHEME"); + snprintf(dsn, sizeof dsn, "%s://%s/s", scheme ? scheme : "shm", dir); + kvlangKv_t *a = kvlangKvConnect(dsn), *b = kvlangKvConnect(dsn); + CHECK(a && b); + kvlangKvRef_t ref = {0}; + CHECK(put_i64(b, "/value", 5) == 0); + CHECK(read_i64(a, "/value", &ref) == 5); + CHECK(put_i64(b, "/value", 9) == 0); + CHECK(read_i64(a, "/value", &ref) == 9); + char text[4097]; + memset(text, 'x', sizeof text - 1); + text[sizeof text - 1] = 0; + kvlangXvalue_t value; + kvlangXvalueNewCharUtf8(&value, text); + CHECK(put(b, "/value", &value) == 0); + kvlangXvalueFree(&value); + CHECK(kvlangKvGetOneRef(a, "/value", &ref, &value) == 0); + char *got = kvlangXvalueValueString(&value); + CHECK(got && strcmp(got, text) == 0); + free(got); + kvlangXvalueFree(&value); + CHECK(kvlangKvDel(b, "/value", err, sizeof err) == 0); + CHECK(kvlangKvGetOneRef(a, "/value", &ref, &value) == 0); + CHECK(kvlangXvalueNone(&value)); + kvlangXvalueFree(&value); + CHECK(put_i64(b, "/value", 17) == 0); + CHECK(read_i64(a, "/value", &ref) == 17); + kvlangXvalueNewInt64(&value, 23); + CHECK(kvlangKvSetOneRef(a, "/value", &ref, &value, err, sizeof err) == 0); + kvlangXvalueFree(&value); + kvlangKvRef_t other = {0}; + CHECK(read_i64(b, "/value", &other) == 23); + if (kvspaceSetValueByRef) { + kvlangXvalueNewInt64(&value, 29); + CHECK(kvspaceSetValueByRef(a->h, &ref.ref, "/value", value.data, + value.len, 0, 0, err, sizeof err) == 0); + kvlangXvalueFree(&value); + CHECK(read_i64(b, "/value", &other) == 29); + } + + const char *pc = "/vthread/vt/[1]/[1,0]"; + const char *changed_pc = "/vthread/vt/[1]/[7,0]"; + CHECK(kvlangVthreadSet(b, "vt", pc, "running") == 0); + kvlangStrbuf_t pc_key, buffer; + kvlangStrbufInit(&pc_key); + kvlangStrbufInit(&buffer); + kvlangKeytreeVthreadPc("vt", &pc_key); + kvlangKvRef_t pc_ref = {0}; + CHECK(kvlangVthreadMemberGetBuf(a, pc_key.p, &pc_ref, &buffer)); + CHECK(strcmp(buffer.p, pc) == 0); + CHECK(kvlangVthreadSet(b, "vt", changed_pc, "wait") == 0); + CHECK(kvlangVthreadMemberGetBuf(a, pc_key.p, &pc_ref, &buffer)); + CHECK(strcmp(buffer.p, changed_pc) == 0); + + kvlangParam_t write = {.name = "*p"}; + kvlangRwirInst_t inst = {.writes = &write, .nw = 1}; + kvlangFrame_t frame = {.kv = a, .vtid = "vt", .pc = pc, .inst = &inst}; + const char *targets[] = {"/a", "/b"}; + for (int i = 0; i < 2; i++) { + kvlangXvalueNewPtr(&value, "int64", targets[i]); + CHECK(put(b, "/vthread/vt/[1]/p", &value) == 0); + kvlangXvalueFree(&value); + kvlangXvalueNewInt64(&value, i ? 7 : 5); + CHECK(kvlangBuiltinWriteResult(&frame, &value) == 0); + kvlangXvalueFree(&value); + } + other = (kvlangKvRef_t){0}; + CHECK(read_i64(b, "/a", &other) == 5); + other = (kvlangKvRef_t){0}; + CHECK(read_i64(b, "/b", &other) == 7); + + CHECK(kvlangVthreadSet(b, "vt", pc, "running") == 0); + write.name = "/b"; + frame.cached_targets = true; + uint8_t invalid[40] = {5}; + for (uint32_t len = 1; len <= sizeof invalid; len++) + if (len != 32) + CHECK(rejects_result(&frame, b, invalid, len)); + const unsigned fields[] = {0, 2, 10}; + for (unsigned i = 0; i < sizeof fields / sizeof fields[0]; i++) { + unsigned field = fields[i]; + invalid[field]++; + CHECK(rejects_result(&frame, b, invalid, 32)); + invalid[field]--; + } + value = (kvlangXvalue_t){invalid, 32, 1}; + CHECK(kvlangBuiltinWriteResult(&frame, &value) == 0); + CHECK(kvlangKvGetOne(b, "/b", &value) == 0); + CHECK(kvlangXvalueNone(&value)); + kvlangXvalueFree(&value); + kvlangStrbufFree(&pc_key); + kvlangStrbufFree(&buffer); + kvlangKvDisconnect(b); + kvlangKvDisconnect(a); + return 0; +} From 0ce91b02ee071a2ed9560655253678e76ef57d29 Mon Sep 17 00:00:00 2001 From: AmuroEita <1071307515@qq.com> Date: Thu, 8 Oct 2026 18:16:20 +0800 Subject: [PATCH 3/4] fix(runtime): weak-import optional value writes on macOS --- runtime/src/runtime_internal.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/runtime/src/runtime_internal.h b/runtime/src/runtime_internal.h index 49f2ddae..907a1c1e 100644 --- a/runtime/src/runtime_internal.h +++ b/runtime/src/runtime_internal.h @@ -49,7 +49,12 @@ extern int kvspaceSetValue(void *h, const char *key, const uint8_t *value, extern int kvspaceSetValueByRef(void *h, kvspaceRef_t *ref, const char *key, const uint8_t *value, uint32_t value_len, uint8_t ro, uint32_t vid, char *err, - uint32_t err_cap) __attribute__((weak)); + uint32_t err_cap) +#ifdef __APPLE__ + __attribute__((weak_import)); +#else + __attribute__((weak)); +#endif /* 指令边界回收读借用池;定位读/写(分片);只读 head 前缀。见 kvspace.h 契约。 */ extern void kvspaceReadReset(void *h); From 69309cab78a4e8095f5b9593f39b9cd698c9c2ac Mon Sep 17 00:00:00 2001 From: AmuroEita <1071307515@qq.com> Date: Thu, 8 Oct 2026 18:27:21 +0800 Subject: [PATCH 4/4] fix(runtime): allow optional value writes to link on macOS --- runtime/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index 69a43a39..de5dbe51 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -24,7 +24,7 @@ if(APPLE) # macOS:数学/线程符号在 libSystem 内(无 -lm/-lpthread);ld64 无 --disable-new-dtags。 target_link_libraries(kvlang_runtime PRIVATE kvspace) set_target_properties(kvlang_runtime PROPERTIES - LINK_FLAGS "-Wl,-export_dynamic -Wl,-rpath,${KVSPACE_LIB_DIR}") + LINK_FLAGS "-Wl,-export_dynamic -Wl,-U,_kvspaceSetValueByRef -Wl,-rpath,${KVSPACE_LIB_DIR}") else() target_link_libraries(kvlang_runtime PRIVATE kvspace m pthread) # --export-dynamic 供 kvlang(term 扩展)找符号;--disable-new-dtags 使 rpath 转 DT_RPATH(传递)。