diff --git a/bench/native/.gitignore b/bench/native/.gitignore new file mode 100644 index 00000000..acdc3619 --- /dev/null +++ b/bench/native/.gitignore @@ -0,0 +1,3 @@ +results/binaries/ +results/key-cache/binaries/ +results/fast/binaries/ diff --git a/bench/native/README.md b/bench/native/README.md new file mode 100644 index 00000000..dde01d6f --- /dev/null +++ b/bench/native/README.md @@ -0,0 +1,92 @@ +# Recoverable scalar native experiment + +For guarded specialization, compiler-assisted partial evaluation, and opcode-helper copy-and-patch JIT comparisons, see [Native execution strategies](strategies.md). + +For faster PC codecs, redo application, and loop-selective address caching, see [Reduced instruction overhead](fast.md). + +`compile.py` runs the existing layout frontend, reads its RWIR from KVSpace, and emits a C worker. The source algorithms are unchanged. This is an opt-in benchmark prototype, with a separate packed frame ABI; it is not integrated into the interpreter or a claim about all kvlang programs. + +## State and recovery + +Every native instruction reads the PC at `/vthread/native/‥pc`, loads its operands from KVSpace's shared mapping, and commits changes back to that mapping. Frames, argument references, literal values, status, and the redo journal are KV tensors/values. Local C values exist only while computing one instruction. Calls use KV frames, not a recursive C call stack. Constants are read from KV cells, not embedded execution literals. The generated code and frame layout are immutable for a compiled program; a stored program hash rejects a different worker. + +A release-store publishes the complete redo record before any live frame/PC update. Restart replays a prepared record, including a partially written PC, then clears its marker. This covers process death during execution, not machine power loss or filesystem durability. The timing includes every journal commit. Initialization marks the store non-runnable before changing it; retry `init` if initialization is interrupted. + +Linux x86-64 SHM with an absolute DSN, fixed value shapes, and one writer is required. Native workers take an advisory file lock; other KV clients must avoid writes while a worker runs, especially replacing or deleting mapped values. Between stopped workers, clients can edit values, PC, and status through KVSpace. Every `run` reattaches and validates its schema. This prototype does not provide structural mutation leases or concurrent transactions. + +The accepted subset is fixed-arity functions with int64 parameters and one int64 output; int64/bool locals; assignment, int64 arithmetic/comparisons/bit operations/shifts, branch, and recursive calls. Add/sub/mul overflow and invalid shifts fail. Depth is limited to 256. Arrays, objects, strings, external functions, FS/Redis, and other opcodes are rejected or unsupported. + +## Reproduce + +Use an existing kvlang CLI, matching KVSpace ABI headers, a SHM backend, and two builds of the same KVSpace frontend source. The default build has no optimization flags; Release uses `-O3 -DNDEBUG`. + +```sh +cmake -S /path/to/kvspace -B /tmp/frontend-default -DCMAKE_BUILD_TYPE= +cmake --build /tmp/frontend-default --target kvspace +cmake -S /path/to/kvspace -B /tmp/frontend-release -DCMAKE_BUILD_TYPE=Release +cmake --build /tmp/frontend-release --target kvspace +python3 bench/native/run.py \ + --kvlang /path/to/kvlang/bin/kvlang \ + --frontend /tmp/frontend-release/libkvspace.so.1 \ + --baseline-frontend /tmp/frontend-default/libkvspace.so.1 \ + --backend /path/to/backend/build \ + --include /path/to/abi/include --output bench/native/results +python3 bench/native/validate.py \ + --kvlang /path/to/kvlang/bin/kvlang \ + --frontend /tmp/frontend-release/libkvspace.so.1 \ + --backend /path/to/backend/build --include /path/to/abi/include \ + --binaries bench/native/results/binaries +``` + +To compile a single entry, supply `compile.py` with the same `--kvlang`, `--frontend`, `--backend`, `--include`, plus `--source file.kv --entry function --output /tmp/worker`. Initialize with `/tmp/worker shm:///tmp/store init ` and execute with `/tmp/worker shm:///tmp/store run`. Optional `run ` exits 75 after that many committed instructions; a new worker resumes from KVSpace. + +## Measurements + +CPU24, nine alternating rounds, fresh store per sample. The interpreter includes kvlang#364, kvspace-c#40 and slotsboxmalloc#10; both frontend variants use source `3e733731`. Generated workers use `cc -O3` and that same Release frontend/backend. Python uses the unchanged repository fixtures. Exact hardware, versions, loaded libraries, hashes, generated schemas, and all 216 samples are in `results/`. + +The generated benchmark wrapper calls the original core function; the nqueens wrapper also computes the mask inside the timed region. Native timing measures `execute`, excluding compilation, initialization, attach/schema validation, and final reporting/status. The interpreter/Python use their existing fixture timers. These are scalar-core comparisons with different startup/wrapper costs. CSV wall times include native initialization and execution as two processes; compilation is excluded. + +Median kernel times (ms): + +| Case | Interpreter, Release frontend | Native with redo | Python | Native speedup | Native / Python | +|---|---:|---:|---:|---:|---:| +| iops(2000) | 17.973 | 0.193 | 0.094 | 93.0x | 2.05x | +| iops(200000) | 1623.717 | 17.437 | 9.058 | 93.1x | 1.93x | +| fib(10) | 29.552 | 0.037 | 0.019 | 792.3x | 1.95x | +| fib(18) | 1392.759 | 1.421 | 0.519 | 980.3x | 2.74x | +| nqueens(6) | 77.564 | 0.117 | 0.080 | 661.4x | 1.46x | +| nqueens(8) | 989.394 | 1.505 | 0.796 | 657.6x | 1.89x | + +Ratios use unrounded medians; raw samples preserve dispersion (large iops frontend A/B paired speedups: 1.39–1.47x). These results do not establish parity for the full interpreter, other programs/backends, or startup-inclusive performance. + +Validation: 147 checks passed, including 32 instruction-boundary restarts, 24 SIGKILL/restarts, prepared partial-commit replay, KV value/constant/status visibility, blocked partial initialization, invalid-state/unsupported-source rejection, and worker exclusion. See `results/validation.json`. + +## Address-cache comparison + +`key_cache.py` isolates address caching using the same generated C, packed KV schema, instruction dispatch, volatile value reads, and redo commits. With `BENCH_KEY_LOOKUP=1`, each instruction resolves the PC body through `kvspaceGet`; the other addresses stay cached. With `BENCH_KEY_LOOKUP=2`, it resolves all five fixed keys (PC, status, frames, constants, journal). Without the macro, all five addresses are attached once per worker process. No mode retains private PC or operand values across instructions. + +The five-key mode is a lookup ablation: it also looks up constants on instructions without literal operands. It does not represent a minimal-lookup interpreter. Address validity uses the fixed-shape, exclusive-worker contract above; startup reattaches after stopped-worker edits. The earlier 216-sample interpreter comparison was recorded at `d357199a`. + +```sh +python3 bench/native/key_cache.py \ + --kvlang /path/to/kvlang/bin/kvlang \ + --frontend /tmp/frontend-release/libkvspace.so.1 \ + --backend /path/to/backend/build --include /path/to/abi/include \ + --output bench/native/results/key-cache +``` + +CPU24, one warmup per variant/input, nine alternating rounds, unchanged repository iops/fib/nqueens cores and Python fixtures. All three standard scales plus one larger scale per case: 432 measured samples with equal outputs, and 108 groups with identical final native KV-state digests. Timing includes redo and excludes init/attach/reporting. Results and hashes are in `results/key-cache/`. + +Large-input medians (ms); speedup compares PC lookup with cached addresses while the other four addresses stay cached: + +| Case | PC lookup each instruction | Cached addresses | PC-cache speedup | Python | +|---|---:|---:|---:|---:| +| iops(200000) | 156.723 | 17.939 | 8.74x | 8.896 | +| fib(18) | 11.343 | 1.439 | 7.88x | 0.525 | +| nqueens(8) | 9.552 | 1.507 | 6.34x | 0.795 | + +These are native-worker kernel gains, not measurements of an address cache integrated into the default interpreter. The same scalar-only SHM and startup/wrapper limits apply. + +The cached worker passes the 147-check suite, including 32 boundary restarts and 24 SIGKILL/restarts. Each lookup variant passes 123 checks with `--sigkill-restarts 0`, including boundary restarts, KV edits and partial redo replay. Supplementary typed-entry fixtures compile in default cached mode. Use the `validate.py` command above with `--binaries bench/native/results/key-cache/binaries/`; add `--sigkill-restarts 0` for either lookup variant to reproduce the completed checks. + +The full lookup-PC SIGKILL test fails: death inside `Get` can leave the allocator's shared spinlock held, blocking the next process in `sbo_allocated_size`. This was reproduced with a 120-second resume timeout and a debugger backtrace. The lookup variants are timing ablations, not recovery-safe workers. `results/key-cache/validation.json` records the failure and skipped SIGKILL scope; `orphan-lock-backtrace.txt` records the stuck stack. No allocator repair or forced unlock is included. diff --git a/bench/native/compile.py b/bench/native/compile.py new file mode 100644 index 00000000..94b30706 --- /dev/null +++ b/bench/native/compile.py @@ -0,0 +1,239 @@ +#!/usr/bin/env python3 +"""Experimental scalar RWIR compiler with all execution state in SHM KVSpace.""" +import argparse +import ctypes as c +import hashlib +import json +import os +from pathlib import Path +import re +import struct +import subprocess +import tempfile + +from fast import MODES + +STRATEGIES = ['decoded', 'partial', 'guarded', 'copy-patch', 'copy-patch-guarded', 'address-cache', *MODES] + + +class KV: + def __init__(self, frontend, dsn): + self.lib = c.CDLL(str(frontend)) + self.lib.kvspaceConnect.argtypes = [c.c_char_p] + self.lib.kvspaceConnect.restype = c.c_void_p + self.lib.kvspaceGet.argtypes = [c.c_void_p, c.c_char_p, c.c_int, + c.POINTER(c.c_void_p), c.POINTER(c.c_uint32)] + self.lib.kvspaceClose.argtypes = [c.c_void_p] + self.handle = self.lib.kvspaceConnect(dsn.encode()) + if not self.handle: + raise RuntimeError('cannot open layout store') + + def get(self, key): + p, n = c.c_void_p(), c.c_uint32() + if self.lib.kvspaceGet(self.handle, key.encode(), 0, c.byref(p), c.byref(n)): + raise RuntimeError('cannot read ' + key) + if not n.value: + return None + value = c.string_at(p, n.value) + head = 1 << value[0] + return value[18:head].rstrip(b'\0').decode(), value[head:] + + def close(self): + self.lib.kvspaceClose(self.handle) + + +def instruction_code(fn, row, instruction, functions, bindings=None): + op, reads, writes, call = instruction + code = [] + bindings = bindings or {} + binary = {'bitand': '&', 'bitor': '|', 'bitxor': '^', '&': '&', '|': '|', '^': '^', + 'eq': '==', 'neq': '!=', 'lt': '<', 'le': '<=', 'gt': '>', 'ge': '>='} + arithmetic = {'+': 'add', 'add': 'add', '-': 'sub', 'sub': 'sub', '*': 'mul', 'mul': 'mul'} + comparisons = {'eq', 'neq', 'lt', 'le', 'gt', 'ge'} + for i, (mode, value) in enumerate(reads): + expr = f'load_constant(constants, {value})' if mode == 'constant' else f'load_cell(state, base + {2 + 2 * fn["slots"][value]})' + expr = bindings.get('reads', {}).get(i, expr) + code.append(f'cell_t a{i} = {expr}; if (!a{i}.tag) return fail(h, "undefined operand");') + dest = 'base + ' + str(2 + 2 * fn['slots'][writes[0][1]]) if writes else None + dest = bindings.get('dest', dest) + prefix, sep, bare = op.rpartition('·') + if not sep: + bare = op + elif prefix != 'int64': + raise ValueError('unsupported opcode type: ' + op) + next_row = bindings.get('next_row', str(row + 1)) + target_depth, target_row = 'depth', next_row + if call: + child = functions[op] + if len(reads) != child['nr'] or not dest: + raise ValueError('call arity mismatch') + code += [f'if (a{i}.tag != 1) return fail(h, "expected int64");' for i in range(len(reads))] + code += ['if (depth + 1 >= DEPTH) return fail(h, "stack overflow");', + 'size_t next = (depth + 1) * STRIDE;', + 'for (size_t j = 2; j < STRIDE; j += 2) stage(journal, &count, next + j, 0);', + f'stage(journal, &count, next, {bindings.get("callee", child["id"])});', + f'stage(journal, &count, next + 1, {next_row});', + f'stage(journal, &count, next + {2 + 2 * child["nr"]}, 3);', + f'stage(journal, &count, next + {3 + 2 * child["nr"]}, {dest});'] + for i, (mode, value) in enumerate(reads): + reference = f'a{i}.value' if mode == 'constant' else 'base + ' + str(2 + 2 * fn['slots'][value]) + reference = bindings.get('references', {}).get(i, reference) + tag = bindings.get('tags', {}).get(i, 1 if mode == 'constant' else 3) + code += [f'stage(journal, &count, next + {2 + 2 * i}, {tag});', + f'stage(journal, &count, next + {3 + 2 * i}, {reference});'] + target_depth, target_row = 'depth + 1', '1' + elif bare == 'return' and not reads and not writes: + target_depth, target_row = 'depth ? depth - 1 : 0', 'depth ? state[base + 1] : 0' + elif bare in ('goto', 'br') and not writes: + if len(reads) != (1 if bare == 'goto' else 3): + raise ValueError('branch arity mismatch') + if bare == 'goto': + code.append('if (a0.tag != 1 || !a0.value) return fail(h, "invalid branch");') + target_row = 'a0.value' + else: + code.append('if (a0.tag != 2 || a1.tag != 1 || a2.tag != 1 || !a1.value || !a2.value) return fail(h, "invalid branch");') + target_row = 'a0.value ? a1.value : a2.value' + else: + if not dest: + raise ValueError('missing output') + if bare == '=' and len(reads) == 1: + expression, tag = 'a0.value', 'a0.tag' + elif bare in (*binary, *arithmetic, 'shl', 'shr') and len(reads) == 2: + code.append('if (a0.tag != 1 || a1.tag != 1) return fail(h, "expected int64");') + tag = '2' if bare in comparisons else '1' + if bare in arithmetic: + code += ['int64_t value;', f'if (__builtin_{arithmetic[bare]}_overflow((int64_t)a0.value, (int64_t)a1.value, &value)) return fail(h, "integer overflow");'] + expression = '(uint64_t)value' + elif bare in ('shl', 'shr'): + code.append('if (a1.value >= 64) return fail(h, "invalid shift");') + expression = 'a0.value << a1.value' if bare == 'shl' else '(uint64_t)((int64_t)a0.value >> a1.value)' + else: + expression = f'((int64_t)a0.value {binary[bare]} (int64_t)a1.value)' + else: + raise ValueError('unsupported opcode: ' + op) + code.append(f'if (store_cell(state, journal, &count, {dest}, (cell_t){{{expression}, {tag}}})) return fail(h, "invalid output");') + tail = bindings.get('tail', 'break;') + code.append(f'if (commit(h, state, journal, pc, count, {target_depth}, {target_row})) return -1;\n{tail}') + return code + + +def generate(kv, entry): + functions, constants = {}, [] + entry = entry.removeprefix('/lib/') + + def literal(value, tag): + cell = (tag, value) + if cell not in constants: + constants.append(cell) + return ('constant', constants.index(cell)) + + def operand(v): + if not v: + raise ValueError('missing operand') + kind, body = v + if kind == 'rwir': + name, _, ty = body[5:].partition(b'\0') + if ty and ty not in (b'int64', b'bool'): + raise ValueError('unsupported scalar type: ' + ty.decode()) + return ('slot', name.decode()) + if kind == 'int64' and len(body) == 8: + return literal(struct.unpack(' 1: + raise ValueError('unsupported instruction arity') + op = v[1][5:].decode() + call = v[0] == 'rwfunc' + if call: + op = op.removeprefix('/lib/') + reads = [operand(kv.get(base + f'/[{row},-{j}]')) for j in range(1, nr_i + 1)] + writes = [operand(kv.get(base + f'/[{row},{j}]')) for j in range(1, nw_i + 1)] + if any(mode != 'slot' for mode, _ in writes): + raise ValueError('literal output') + for mode, slot in reads + writes: + if mode == 'slot' and slot not in slots: + if not re.fullmatch(r'[A-Za-z_][A-Za-z_0-9]*', slot): + raise ValueError('unsupported address: ' + slot) + slots[slot] = len(slots) + fn['instructions'].append((op, reads, writes, call)) + if call: + load(op) + row += 1 + if not fn['instructions'] or row > 10000: + raise ValueError('invalid instruction count') + + load(entry) + stride = 2 + 2 * max(len(f['slots']) for f in functions.values()) + code = [] + for fn in functions.values(): + code.append(f'case {fn["id"]}: switch (row) {{') + for row, (op, reads, writes, call) in enumerate(fn['instructions'], 1): + code.append(f'case {row}: {{') + code += instruction_code(fn, row, (op, reads, writes, call), functions) + code.append('}') + code.append('default: return fail(h, "invalid PC row"); } break;') + schema = dict(entry=entry, stride=stride, functions=functions, constants=constants) + template = Path(__file__).with_name('worker.c.in').read_text() + source = template.replace('@STRIDE@', str(stride)).replace('@ARGS@', str(functions[entry]['nr'])).replace('@RESULT@', str(2 + 2 * functions[entry]['nr'])).replace('@CONSTANTS@', ','.join('UINT64_C(' + str(v) + ')' for cell in constants for v in cell) or 'UINT64_C(1),UINT64_C(0)').replace('@DISPATCH@', '\n'.join(code)) + schema['program_sha256'] = hashlib.sha256(source.encode()).hexdigest() + return source.replace('@PROGRAM@', schema['program_sha256']), schema + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for flag in ['kvlang', 'frontend', 'backend', 'include', 'source', 'entry', 'output']: + ap.add_argument('--' + flag, required=True) + ap.add_argument('--strategy', choices=STRATEGIES) + args = ap.parse_args() + os.environ['KVSPACE_BACKEND_PATH'] = args.backend + with tempfile.TemporaryDirectory(prefix='kvlang-native-layout-') as td: + source = Path(td) / 'source.kv' + source.write_text(Path(args.source).read_text().replace('__SCALE__', '1')) + dsn = 'shm://' + td + '/store' + layout = subprocess.run([args.kvlang, 'layout', str(source)], env=dict(os.environ, KVSPACE=dsn, LOG_LEVEL='warn'), capture_output=True, text=True) + if layout.returncode: + raise ValueError('layout failed: ' + layout.stderr) + kv = KV(args.frontend, dsn) + try: + text, schema = generate(kv, args.entry) + finally: + kv.close() + out = Path(args.output).resolve() + if args.strategy: + from strategies import generate as generate_strategy + text, _ = generate_strategy(text, schema, args.strategy) + out.with_suffix('.c').write_text(text) + out.with_suffix('.schema.json').write_text(json.dumps(schema, indent=2) + '\n') + frontend = Path(args.frontend).resolve() + subprocess.run(['cc', '-O3', '-std=c11', '-Wall', '-Wextra', '-Werror', '-I' + args.include, str(out.with_suffix('.c')), str(frontend), '-Wl,-rpath,' + str(frontend.parent), '-o', str(out)], check=True) + + +if __name__ == '__main__': + main() diff --git a/bench/native/fast.c.in b/bench/native/fast.c.in new file mode 100644 index 00000000..73539807 --- /dev/null +++ b/bench/native/fast.c.in @@ -0,0 +1,24 @@ +#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ +#error "PC word codec requires little-endian storage" +#endif +typedef struct __attribute__((packed, may_alias)) { uint32_t value; } word_t; +static const uint32_t depth_words[] = {@DEPTH@}; +static const uint32_t row_words[] = {@ROW@}; + +static inline unsigned digits(volatile uint8_t *pc, int offset, int width) { + uint32_t word = ((volatile word_t *)(pc + offset))->value; + uint32_t mask = width == 3 ? UINT32_C(0x00ffffff) : UINT32_MAX; + uint32_t d = (word ^ UINT32_C(0x30303030)) & mask; + if ((d & (UINT32_C(0xf0f0f0f0) & mask)) || + ((d + (UINT32_C(0x06060606) & mask)) & (UINT32_C(0x10101010) & mask))) + return UINT32_MAX; + unsigned result = (d & 255) * 100 + ((d >> 8) & 255) * 10 + ((d >> 16) & 255); + return width == 3 ? result : result * 10 + (d >> 24); +} + +static inline void set_pc(volatile uint8_t *pc, unsigned depth, unsigned row) { + volatile word_t *depth_word = (volatile word_t *)(pc + DEPTH_POS); + uint32_t separator = depth_word->value & UINT32_C(0xff000000); + depth_word->value = separator | depth_words[depth]; + ((volatile word_t *)(pc + ROW_POS))->value = row_words[row]; +} diff --git a/bench/native/fast.md b/bench/native/fast.md new file mode 100644 index 00000000..567fc18e --- /dev/null +++ b/bench/native/fast.md @@ -0,0 +1,62 @@ +# Reduced instruction overhead + +This extends the scalar native experiment without changing its KV ABI or recovery contract. Every instruction reads the canonical PC path and operands from KVSpace, publishes redo, writes live state and PC, and clears redo. Private caches contain only addresses. The default interpreter is unchanged. + +## Methods + +| Mode | Change from AOT | +|---|---| +| `fast-commit` | Inline the validated commit; apply generated redo without repeating startup index validation. | +| `fast-pc` | Read decimal PC fields with packed volatile word loads and validate every digit; use immutable decimal-format tables for PC writes. Read the seven-byte status with two overlapping four-byte loads. | +| `fast` | Combine commit and PC changes. | +| `fast-slots` | Add the existing guarded slot helpers directly to AOT instruction bodies. | +| `fast-address` | Add the existing terminal-address cache, checking direct scalar slots first. | +| `fast-loop` | Enable address caching only in functions with a compiled backwards branch; inline the guards with that constant hint. | + +The decimal tables occupy 41,024 bytes of read-only format metadata; they do not hold the current PC or KV literal values. The PC remains `/vthread/native/[ddd]/[rrrr,0]`. All loads/stores retain `volatile`, including unaligned fields. Status reads stay within its seven-byte body. The depth-word update preserves the live fixed separator byte, so replay cannot repair a malformed path. + +Commit still validates the patch count and next PC. Generated destination indices are checked during reference resolution or bounded by the frame layout. Startup replay retains full validation of an externally supplied prepared journal. Publication and marker clearing remain release stores; death during either frame or PC application is recovered by replay. No value is forwarded across instruction boundaries. + +The loop hint is derived from immutable RWIR metadata, without benchmark names or inputs. It affects cache use, not control flow: branch constants and PC are always read live. Cache entries require references to descend through active ancestor frames. Same-frame and forward references use generic traversal. Calls invalidate child-frame entries before reuse; a fresh worker starts with empty caches. + +## Results + +CPU24, Xeon Gold 6418H, GCC 14.3, CPython 3.10.12, unchanged repository iops/fib/nqueens cores and Python fixtures. All three repository sweep points plus one larger input per case; one warmup and nine alternating rounds. All 864 outputs agree, and all 108 groups have identical final six-body KV-state digests, including the complete journal. The original AOT workers remain byte-identical to the prior experiment. + +Median execution times in ms, including every redo commit and excluding compilation, initialization, attachment and reporting: + +| Case | AOT | `fast-loop` | Python | AOT speedup | Native / Python | +|---|---:|---:|---:|---:|---:| +| iops(200000) | 17.726 | 8.091 | 9.073 | 2.19x | 0.89x | +| fib(18) | 1.453 | 0.787 | 0.514 | 1.85x | 1.53x | +| nqueens(8) | 1.507 | 0.839 | 0.807 | 1.80x | 1.04x | + +Paired AOT speedup ranges are 2.12–2.37x, 1.77–1.94x and 1.62–1.85x respectively. This is one compile-time policy across all three cases, not a per-case choice of the fastest variant. Fibonacci remains slower than Python. Full ablations, raw samples, compile observations, binary sizes, library hashes and startup-inclusive wall times are in `results/fast/`. + +Skipping unchanged tags, ASCII-token dispatch, lazy frame generations and direct generated patch application were also tried. They did not improve this combination consistently enough to retain their implementations. `results/fast/rejected.json` records these exploratory comparisons separately from the final experiment. + +These measurements cover the supported int64/bool scalar SHM prototype, not all repository benchmarks or an integrated default-runtime compiler. The fixed mappings, exclusive writer and process-death scope in [README](README.md) still apply. + +Seven modes each pass 149 checks, including 32 instruction-boundary restarts and 24 SIGKILL/restarts. Further checks cover 49 cross-method resumes, seven live-edit groups, seven partially applied call replays and three alias fixtures. Independent CPU25 checks additionally cover 26 AOT/fast-loop groups with loops inside aliasing and deep-reference callees, live KV edits and malformed states; all final six-body digests match. The codec passes 16,955,522 comparisons each under GCC `-O3` and Clang ASan/UBSan, including all depth-byte combinations, malformed row/status bytes, eight alignments and guard-page body boundaries. + +## Reproduce + +```sh +python3 bench/native/strategies.py \ + --kvlang /path/to/kvlang/bin/kvlang \ + --frontend /path/to/release/libkvspace.so.1 \ + --backend /path/to/backend/build --include /path/to/abi/include \ + --output bench/native/results/fast \ + --variants aot fast-commit fast-pc fast fast-slots fast-address fast-loop python +python3 bench/native/validate_strategies.py \ + --kvlang /path/to/kvlang/bin/kvlang \ + --frontend /path/to/release/libkvspace.so.1 \ + --backend /path/to/backend/build --include /path/to/abi/include \ + --binaries bench/native/results/fast/binaries \ + --output bench/native/results/fast/validation.json \ + --variants aot fast-commit fast-pc fast fast-slots fast-address fast-loop +python3 bench/native/validate_codec.py \ + --cpu 24 --output bench/native/results/fast/codec-validation.json +``` + +`compile.py --strategy fast-loop` compiles another supported entry. Omitting `--strategy` preserves the original AOT generator; the original strategy runner/validator defaults are preserved. diff --git a/bench/native/fast.py b/bench/native/fast.py new file mode 100644 index 00000000..9dff3e45 --- /dev/null +++ b/bench/native/fast.py @@ -0,0 +1,77 @@ +"""Reduce per-instruction PC codec and redo overhead without caching values.""" +from pathlib import Path +import re + +MODES = ['fast-commit', 'fast-pc', 'fast', 'fast-slots', 'fast-address', 'fast-loop'] + + +def generate(source, mode, schema): + loops = set() + if mode == 'fast-loop': + for fn in schema['functions'].values(): + for row, (op, reads, _, call) in enumerate(fn['instructions'], 1): + bare = op.rsplit('·', 1)[-1] + targets = reads if bare == 'goto' else reads[1:] if bare == 'br' else [] + if not call and any(m == 'constant' and 0 < schema['constants'][v][1] <= row for m, v in targets): + loops.add(fn['id']) + if mode in ('fast-slots', 'fast-address', 'fast-loop'): + template = Path(__file__).with_name('strategies.c.in').read_text() + cache = mode == 'fast-address' or bool(loops) + helper_start = '#ifdef STRATEGY_ADDRESS_CACHE' if cache else 'static inline cell_t read_slot(' + helpers = template[template.index(helper_start):template.index('static inline __attribute__((always_inline)) cell_t read_operand')] + start = source.index('static int execute(') + end = source.index('static int number(', start) + execute = source[start:end].replace('load_cell(', 'read_slot(').replace('store_cell(', 'write_slot(') + prefix = '#define STRATEGY_GUARDED\n' + if cache: + for signature in ['static inline cell_t read_slot(', 'static inline int write_slot(']: + pos = helpers.index(signature) + begin = helpers.index('#ifdef STRATEGY_ADDRESS_CACHE', pos) + middle = helpers.index('#ifdef STRATEGY_GUARDED', begin) + finish = helpers.index('#endif', middle) + len('#endif\n') + helpers = helpers[:begin] + helpers[middle:finish] + helpers[begin:middle] + helpers[finish:] + if mode == 'fast-loop': + helpers = helpers.replace('read_slot(volatile uint64_t *state, size_t index)', + 'read_slot(volatile uint64_t *state, size_t index, int cached)') + for signature in ['static inline cell_t read_slot(', 'static inline int write_slot(']: + pos = helpers.index(signature) + begin = helpers.index('#ifdef STRATEGY_ADDRESS_CACHE', pos) + finish = helpers.index('#endif', begin) + helpers = helpers[:begin] + helpers[begin:finish].replace('\n', '\n if (cached) {\n', 1) + '\n }\n' + helpers[finish:] + helpers = helpers.replace('unsigned *count, size_t index, cell_t value)', + 'unsigned *count, size_t index, cell_t value, int cached)') + helpers = helpers.replace('static inline cell_t read_slot(', 'static inline __attribute__((always_inline)) cell_t read_slot(') + helpers = helpers.replace('static inline int write_slot(', 'static inline __attribute__((always_inline)) int write_slot(') + for fn in schema['functions'].values(): + begin = execute.index(f'case {fn["id"]}: switch (row) {{') + finish = execute.index('default: return fail(h, "invalid PC row"); } break;', begin) + block = re.sub(r'read_slot\(state, base \+ (\d+)\)', + lambda m: f'read_slot(state, base + {m[1]}, {int(fn["id"] in loops)})', execute[begin:finish]) + block = re.sub(r'(write_slot\(state, journal, &count, .*?, \(cell_t\)\{.*?\})(\))', + lambda m: f'{m[1]}, {int(fn["id"] in loops)}{m[2]}', block) + execute = execute[:begin] + block + execute[finish:] + execute = execute.replace('size_t next = (depth + 1) * STRIDE;', + 'size_t next = (depth + 1) * STRIDE;\ninvalidate_frame(next);') + prefix += '#define STRATEGY_ADDRESS_CACHE\n' + source = prefix + source[:start] + helpers + execute + source[end:] + if mode != 'fast-pc': + source = source.replace(' return replay(h, state, journal, pc);', ''' for (unsigned i = 0; i < count; i++) + state[journal[3 + i * 2]] = journal[4 + i * 2]; + set_pc(pc, depth, row); + atomic_store_explicit((_Atomic uint64_t *)journal, 0, memory_order_release); + return 0;''') + source = source.replace('static int commit(', 'static inline __attribute__((always_inline)) int commit(') + if mode != 'fast-commit': + codec = Path(__file__).with_suffix('.c.in').read_text() + for name, count, width in [('DEPTH', 256, 3), ('ROW', 10000, 4)]: + words = [int.from_bytes(f'{n:0{width}d}'.encode(), 'little') for n in range(count)] + codec = codec.replace('@' + name + '@', ','.join(map(str, words))) + start = source.index('static unsigned digits(') + end = source.index('static int replay(', start) + source = source[:start] + codec + '\n' + source[end:] + start = source.index(" if (status[0] != 'r'") + end = source.index(' return 1;', start) + source = source[:start] + ''' if (((volatile word_t *)status)->value != UINT32_C(0x6e6e7572) || + ((volatile word_t *)(status + 3))->value != UINT32_C(0x676e696e)) +''' + source[end:] + return source, dict(jit_bytes=0, loop_cached_functions=[name for name, fn in schema['functions'].items() if fn['id'] in loops]) diff --git a/bench/native/key_cache.py b/bench/native/key_cache.py new file mode 100644 index 00000000..e24d1fec --- /dev/null +++ b/bench/native/key_cache.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 +"""Isolate shared-memory address caching on unchanged scalar benchmark fixtures.""" +import argparse +import json +import os +from pathlib import Path +import platform +import shutil +import statistics +import subprocess +import tempfile + +from run import CASES, benchmark, compile_case, loaded_libraries, measure_pairs, run, sha + +VARIANTS = ['lookup-all', 'lookup-pc', 'cached', 'python'] + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for name in ['kvlang', 'frontend', 'backend', 'include', 'output']: + ap.add_argument('--' + name, type=Path, required=True) + ap.add_argument('--cpu', type=int, default=24) + ap.add_argument('--pairs', type=int, default=9) + args = ap.parse_args() + if args.pairs < 1: + ap.error('--pairs must be positive') + args.output.mkdir(parents=True, exist_ok=True) + binaries = args.output / 'binaries' + for variant in VARIANTS[:-1]: + (binaries / variant).mkdir(parents=True, exist_ok=True) + os.environ.update(KVSPACE_BACKEND_PATH=str(args.backend), LOG_LEVEL='warn') + env = dict(os.environ) + metadata = dict(cpu=args.cpu, cpu_model=benchmark.cpu_model(), python=platform.python_version(), + compiler=subprocess.check_output(['cc', '--version'], text=True).splitlines()[0], + pairs=args.pairs, inputs={}, warmups=1, + timing='execute only, including redo; excludes init/attach/schema/report; wall includes init and run', + conditions='Linux x86-64 SHM, fixed value shapes, exclusive worker; each instruction reads live KV values', + lookup_all='one kvspaceGet per PC/status/frames/constants/journal key per instruction', + lookup_pc='one kvspaceGet for PC per instruction; other addresses cached', + cached='all five body addresses attached once per process; no KV value cache', + libraries={str(p): sha(p) for p in [args.frontend, args.backend / 'libkvspace-c.so.1']}, + kvlang=dict(path=str(args.kvlang), sha256=sha(args.kvlang))) + scales = {case: [*benchmark.SWEEP[case], CASES[case][-1]] for case in CASES} + workers = {} + for case in scales: + cached = binaries / 'cached' / case + inputs = compile_case(args, case, cached) + workers[case] = {'cached': cached} + for variant, level in [('lookup-pc', 1), ('lookup-all', 2)]: + binary = binaries / variant / case + run(['cc', '-O3', '-std=c11', '-Wall', '-Wextra', '-Werror', + f'-DBENCH_KEY_LOOKUP={level}', '-I' + str(args.include), cached.with_suffix('.c'), + args.frontend, '-Wl,-rpath,' + str(args.frontend.parent), '-o', binary], env, args.cpu) + shutil.copyfile(cached.with_suffix('.schema.json'), binary.with_suffix('.schema.json')) + workers[case][variant] = binary + metadata['inputs'][case] = dict(inputs, scales=scales[case], + workers={k: sha(p) for k, p in workers[case].items()}) + with tempfile.TemporaryDirectory(prefix='key-cache-libraries-') as td: + loaded, _ = run([workers['iops']['cached'], 'shm://' + td + '/store', 'init', 1], + dict(env, LD_DEBUG='libs'), args.cpu) + metadata['loaded'] = loaded_libraries(loaded, args.frontend) + + rows = measure_pairs(args, scales, VARIANTS, workers) + summary = {} + for case, points in scales.items(): + for scale in points: + samples = [r for r in rows if r['case'] == case and r['scale'] == scale] + timings = {v: [r['kernel_ns'] for r in samples if r['variant'] == v] for v in VARIANTS} + medians = {v: statistics.median(values) / 1e3 for v, values in timings.items()} + ratios = {} + for variant in VARIANTS[:2]: + paired = [lookup / cached for lookup, cached in zip(timings[variant], timings['cached'])] + ratios[variant] = dict(median=statistics.median(paired), minimum=min(paired), maximum=max(paired)) + summary[f'{case}({scale})'] = dict(medians_us=medians, paired_speedups=ratios) + metadata['samples'] = len(rows) + metadata['output_checks'] = len(rows) + metadata['equal_final_state_groups'] = len(rows) // len(VARIANTS) + (args.output / 'metadata.json').write_text(json.dumps(metadata, indent=2) + '\n') + (args.output / 'medians-us.json').write_text(json.dumps(summary, indent=2) + '\n') + print(json.dumps(summary, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/bench/native/results/fast/codec-validation.json b/bench/native/results/fast/codec-validation.json new file mode 100644 index 00000000..c871edff --- /dev/null +++ b/bench/native/results/fast/codec-validation.json @@ -0,0 +1,39 @@ +{ + "cpu": 24, + "scope": "Decimal PC codec and exact seven-byte status", + "coverage": [ + "all 2^24 depth-byte combinations", + "all 16^4 relevant row-nibble combinations", + "all legal depth/row values at eight alignments", + "all 256 byte replacements at every PC digit/status byte", + "guard-page exact body boundaries" + ], + "source_sha256": { + "fast.py": "8cf24f4bc38addba0f9ce074b2140c330f708eb2049498360a6c3281f0ba4473", + "fast.c.in": "a0f8f31996dc453ca1695da0ffcf0f05793f34d170377eef1f2835466d13fa7c", + "worker.c.in": "c52890d0108cb1900bc534dc3567237e428a524314e70b16918e922cd3f6c385" + }, + "harness_sha256": "00712cae6b36f647d1ef89ae49a1707a9f15e3fd5f194170976a8052fabba614", + "runs": [ + { + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0", + "flags": [ + "-O3" + ], + "stdout": "codec checks=16955522 passed", + "stderr": "", + "exit": 0 + }, + { + "compiler": "Ubuntu clang version 14.0.0-1ubuntu1.1", + "flags": [ + "-O1", + "-fsanitize=address,undefined", + "-fno-omit-frame-pointer" + ], + "stdout": "codec checks=16955522 passed", + "stderr": "", + "exit": 0 + } + ] +} diff --git a/bench/native/results/fast/codegen.json b/bench/native/results/fast/codegen.json new file mode 100644 index 00000000..2c2a43df --- /dev/null +++ b/bench/native/results/fast/codegen.json @@ -0,0 +1,113 @@ +{ + "iops": { + "aot": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "9a3fe6451d94d3cc2f8cb4e3c135c89d49efa41c7b9f9496bc9fc7aeec3a1360" + }, + "fast-commit": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "cf28a7c5d31ed81affda2d42f01b0b3c2bdabb97d3845860664fec437abd4e31" + }, + "fast-pc": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "65f4c15f3e2f496875db3fdd57abbede5724e258f6cf3c0d905379d553e7b7e8" + }, + "fast": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "d0c902fb48f8d25c4a3326e7480990fd18c156dca414ba252e3f0ec1b35068a7" + }, + "fast-slots": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "826ab61144e67165fbd5457ab043ac005647947cee49445915f7b71633b2e5b4" + }, + "fast-address": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "ae84af0da900fb7ac8cb97fab664d2188cb5aabd326a7c41a023928e25939b1e" + }, + "fast-loop": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "0a21d3408e19815a9387727f860f9204b1639534d707e4536224894ba2d95030" + } + }, + "fib": { + "aot": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "1fbf2a34bc09aaab00fedb9746d502e9be8a12bc87f4e5119e41018fd7ada24a" + }, + "fast-commit": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "806be4408591ed586641c83f4f2b5868a7a63991abf38ecc5243f913103433eb" + }, + "fast-pc": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "dc6d0c93542b31cb8dcf603a8e68788ed0d56c3cc7bf4eb267303555bf3a3b55" + }, + "fast": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "0a33fb2f00a1b660f09af222f03100a0bb89626e375c55a63e577f8de8807cd1" + }, + "fast-slots": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "c384e1d17b39d2f096d475ab523dbf9be5ede19c92440d75bc7b24d463811025" + }, + "fast-address": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "2a66740f2cae4773f80b228d62b2393a3a34834908520e51b45a056a0652b6f0" + }, + "fast-loop": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "c384e1d17b39d2f096d475ab523dbf9be5ede19c92440d75bc7b24d463811025" + } + }, + "nqueens": { + "aot": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "ff84d32d14ee89a49a0928f21f3029a1599e3b03dc4a2cb436e9dc3dd15e3118" + }, + "fast-commit": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "1985fa7e0c4a531b5a46305ed17dfcc7da028a01b6680e17f44b292ede75a47e" + }, + "fast-pc": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "1048df7b6bec14879985e89c094b9ec9108c69f9237130df99327578244a030f" + }, + "fast": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "cb1ed8b353dcf14f2220eadcb3b4b87bd0b7994bcfc01a41c14c8a9a112f157d" + }, + "fast-slots": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "87d212423814a80ab89568ef79815d9c680e4f962138a162b07fed409b51bce8" + }, + "fast-address": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "6a64b42d07f234abd442e19380ac103cc16ed41fbe65c4d7ecbfe175c6725503" + }, + "fast-loop": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "15556bda9e4557146a74b2f0eb9ebb99ad84bd17b1a85783c8d94b3884ea999f" + } + } +} diff --git a/bench/native/results/fast/independent-codec.json b/bench/native/results/fast/independent-codec.json new file mode 100644 index 00000000..6695783f --- /dev/null +++ b/bench/native/results/fast/independent-codec.json @@ -0,0 +1,70 @@ +{ + "cpu": 25, + "scope": "Current decimal PC codec and exact seven-byte status; removed raw-token dispatch excluded", + "coverage": [ + "all 2^24 depth-byte combinations", + "all 16^4 relevant row-nibble combinations", + "all legal depth/row values at eight alignments", + "all 256 byte replacements at every PC digit/status byte", + "guard-page exact body boundaries", + "PC updates preserve every non-digit byte" + ], + "source_sha256": { + "fast.py": "8cf24f4bc38addba0f9ce074b2140c330f708eb2049498360a6c3281f0ba4473", + "fast.c.in": "a0f8f31996dc453ca1695da0ffcf0f05793f34d170377eef1f2835466d13fa7c", + "worker.c.in": "c52890d0108cb1900bc534dc3567237e428a524314e70b16918e922cd3f6c385" + }, + "harness_sha256": "b755aced49398e46add93023c26436a2bd4864ba7e1b36623ac1cb2b21584237", + "runs": [ + { + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0", + "flags": [ + "-O3" + ], + "stdout": "codec checks=16953475 passed", + "stderr": "", + "exit": 0 + }, + { + "compiler": "Ubuntu clang version 14.0.0-1ubuntu1.1", + "flags": [ + "-O1", + "-fsanitize=address,undefined", + "-fno-omit-frame-pointer", + "-fno-pie", + "-no-pie" + ], + "stdout": "codec checks=16953475 passed", + "stderr": "", + "exit": 0 + }, + { + "compiler": "Ubuntu clang version 14.0.0-1ubuntu1.1", + "flags": [ + "-O1", + "-fsanitize=address,undefined", + "-fno-omit-frame-pointer", + "-fno-pie", + "-no-pie" + ], + "stdout": "codec checks=16953475 passed", + "stderr": "", + "exit": 0 + }, + { + "compiler": "Ubuntu clang version 14.0.0-1ubuntu1.1", + "flags": [ + "-O1", + "-fsanitize=address,undefined", + "-fno-omit-frame-pointer", + "-fno-pie", + "-no-pie" + ], + "stdout": "codec checks=16953475 passed", + "stderr": "", + "exit": 0 + } + ], + "prior_attempt": "One Clang PIE sanitizer invocation exited with SIGSEGV without a retained diagnostic; its immediate rerun passed. Current evidence uses three separate non-PIE sanitizer builds and runs.", + "script_sha256": "696ca7c94856ac5b190bd8ad5d497bc7ab1e6f25a52608f473f5ee9b0ce65948" +} diff --git a/bench/native/results/fast/independent-validation.json b/bench/native/results/fast/independent-validation.json new file mode 100644 index 00000000..83031b34 --- /dev/null +++ b/bench/native/results/fast/independent-validation.json @@ -0,0 +1,294 @@ +{ + "cpu": 25, + "sigkill_restarts": 0, + "source_sha256": { + "compile.py": "d45998c321000947c0504e77c02896fd2ad0cf0a424e1eeaa3b13a5d50998c34", + "worker.c.in": "c52890d0108cb1900bc534dc3567237e428a524314e70b16918e922cd3f6c385", + "fast.py": "8cf24f4bc38addba0f9ce074b2140c330f708eb2049498360a6c3281f0ba4473", + "fast.c.in": "a0f8f31996dc453ca1695da0ffcf0f05793f34d170377eef1f2835466d13fa7c", + "strategies.c.in": "471fe04023854f2e2e7d3f5466f0309a6b25870c9114b930226038315a982b81", + "strategies.py": "db0b8e0cb8125e082572bde0954cb9658d522de04395c7dba28c8871edc0864c", + "validate.py": "d6e25cc4a9d0ccd3b65d994d64b2c85bc519dfea994aafe83f3f17c4bbd2be53", + "run.py": "840ea3d9d879b3be393fd5fd9b3d14b52af84611112b5b7959cbfde0e7049070" + }, + "libraries": { + "/tmp/kvlang-perf-current/bin/kvlang": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a", + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "compilation": "fresh compile.py --strategy fast-loop and separate AOT oracle", + "entries": { + "iops": { + "loop_cached_functions": [ + "iops" + ], + "generated_c_sha256": { + "aot": "ef929eb7f7dea1fe901fcbac9fa5fc18af13919e96c57d129744caf3dd0e781b", + "fast-loop": "e72fd66ab20f4951537ee41387ad6af41aa858c270168740c2db5355774c50c9" + }, + "worker_sha256": { + "aot": "9a3fe6451d94d3cc2f8cb4e3c135c89d49efa41c7b9f9496bc9fc7aeec3a1360", + "fast-loop": "0a21d3408e19815a9387727f860f9204b1639534d707e4536224894ba2d95030" + } + }, + "fib": { + "loop_cached_functions": [], + "generated_c_sha256": { + "aot": "07b55ab8792de8104e5df323ebae83bbb64e6ce22c75c4d6fe9ca374146ccf95", + "fast-loop": "566d37b387f2de14f666e06e7b98d4dbd4a7fd796b29942c82dd7985e5cfacf7" + }, + "worker_sha256": { + "aot": "1fbf2a34bc09aaab00fedb9746d502e9be8a12bc87f4e5119e41018fd7ada24a", + "fast-loop": "c384e1d17b39d2f096d475ab523dbf9be5ede19c92440d75bc7b24d463811025" + } + }, + "nqueens": { + "loop_cached_functions": [ + "nq" + ], + "generated_c_sha256": { + "aot": "0d3c595d6ba9f9df24fe1e13c52c551859609ae64ce3e7acd64d272848e421e0", + "fast-loop": "bf693b036f8500a73385d914951ffd45d13fc3a9fab71e6b7b880cad4ec4b2bb" + }, + "worker_sha256": { + "aot": "ff84d32d14ee89a49a0928f21f3029a1599e3b03dc4a2cb436e9dc3dd15e3118", + "fast-loop": "15556bda9e4557146a74b2f0eb9ebb99ad84bd17b1a85783c8d94b3884ea999f" + } + }, + "changed": { + "loop_cached_functions": [ + "bump" + ], + "generated_c_sha256": { + "aot": "3b4c43c1e8518417739136be13d11de5b78d7cc44b4ace23b56e5f10d55a7fa7", + "fast-loop": "8df88793a2196bf8faab1f03967768ef9c40c7bd36dfacef25428b8db586780b" + }, + "worker_sha256": { + "aot": "1a617cf6dc84f9b381e4ba9805a538bfab3951767c01faf9ef5b65a587825fd4", + "fast-loop": "814a4827dc649826c9a5a66a56fbc5893a7c55100421a9513932293114b62085" + } + }, + "deep": { + "loop_cached_functions": [ + "descend" + ], + "generated_c_sha256": { + "aot": "7c654fb59e3a8f4abdedfa9b78a0025953e3f7519449a5c699cace5a7205c76b", + "fast-loop": "e8e7f32d24985cad4b056b485e4f9a8fc4dda910ce791709a3cdf8b9d624c6e8" + }, + "worker_sha256": { + "aot": "cc96ae6303459431dd8f80e5adfcc67a970ac2e0f055ab1b3c5f1eafafc746bd", + "fast-loop": "0b26bcc6e97b160ede284714c98b364b4e30a07ce477913c87b58a5db8e59b4f" + } + }, + "forward": { + "loop_cached_functions": [ + "forward", + "relay", + "leaf" + ], + "generated_c_sha256": { + "aot": "841253ac070dc6bf6f54ec18eb3ef5252ffe033619699f234b05da4eaa7d3a06", + "fast-loop": "23a851ace41e2c07c57fc30254ec76de7932e0f0341403f02a4f367c52bec1c9" + }, + "worker_sha256": { + "aot": "a81ec57168564cf7694d5e4f8c1a0c73d92a61611191fa45291815e4ff19de38", + "fast-loop": "ea4237bb8d510e8c2905f6f07966456af48af4a4583e931944f28b2817c393f1" + } + } + }, + "groups": [ + { + "label": "repeated-output-input-alias", + "case": "changed", + "expected": 38, + "exit": 0, + "equal_full_six_body_digest": "9a1c7208266417fe5a84c2d541ee20452c5f318841d2817661bbc4bd38a6b5fb" + }, + { + "label": "deep-120-ancestor-chain", + "case": "deep", + "expected": 7, + "exit": 0, + "equal_full_six_body_digest": "1e4dc148b7657fc8246e1aba1a960f29f98a8bab297895b5c362225ec804f449" + }, + { + "label": "loop-forward-ref-to-reused-frame", + "case": "forward", + "expected": 53, + "exit": 0, + "equal_full_six_body_digest": "7982fee9f38e8f8a0b722e4a8ef7dc7a3300d6f888bcd1367c392d63a1cfd063" + }, + { + "label": "alias-boundary-2", + "case": "changed", + "expected": 38, + "exit": 0, + "equal_full_six_body_digest": "9a1c7208266417fe5a84c2d541ee20452c5f318841d2817661bbc4bd38a6b5fb" + }, + { + "label": "alias-boundary-7", + "case": "changed", + "expected": 38, + "exit": 0, + "equal_full_six_body_digest": "9a1c7208266417fe5a84c2d541ee20452c5f318841d2817661bbc4bd38a6b5fb" + }, + { + "label": "alias-boundary-19", + "case": "changed", + "expected": 38, + "exit": 0, + "equal_full_six_body_digest": "9a1c7208266417fe5a84c2d541ee20452c5f318841d2817661bbc4bd38a6b5fb" + }, + { + "label": "alias-boundary-35", + "case": "changed", + "expected": 38, + "exit": 0, + "equal_full_six_body_digest": "9a1c7208266417fe5a84c2d541ee20452c5f318841d2817661bbc4bd38a6b5fb" + }, + { + "label": "deep-boundary-1", + "case": "deep", + "expected": 7, + "exit": 0, + "equal_full_six_body_digest": "1e4dc148b7657fc8246e1aba1a960f29f98a8bab297895b5c362225ec804f449" + }, + { + "label": "deep-boundary-9", + "case": "deep", + "expected": 7, + "exit": 0, + "equal_full_six_body_digest": "1e4dc148b7657fc8246e1aba1a960f29f98a8bab297895b5c362225ec804f449" + }, + { + "label": "deep-boundary-32", + "case": "deep", + "expected": 7, + "exit": 0, + "equal_full_six_body_digest": "1e4dc148b7657fc8246e1aba1a960f29f98a8bab297895b5c362225ec804f449" + }, + { + "label": "deep-boundary-100", + "case": "deep", + "expected": 7, + "exit": 0, + "equal_full_six_body_digest": "1e4dc148b7657fc8246e1aba1a960f29f98a8bab297895b5c362225ec804f449" + }, + { + "label": "deep-boundary-300", + "case": "deep", + "expected": 7, + "exit": 0, + "equal_full_six_body_digest": "1e4dc148b7657fc8246e1aba1a960f29f98a8bab297895b5c362225ec804f449" + }, + { + "label": "changed-live-argument", + "case": "iops", + "expected": 4, + "exit": 0, + "equal_full_six_body_digest": "339aedb40ebcc5669aa1fdbdfc81988cb0550fe1a1e25bd54dcfa5c084c8516e" + }, + { + "label": "changed-live-arithmetic-constant", + "case": "iops", + "expected": 8, + "exit": 0, + "equal_full_six_body_digest": "00d23a9e2d811baf8d94a1cbafad44df8138631b7045eaa4406a6b498cc5ac9a" + }, + { + "label": "changed-live-branch-constant", + "case": "iops", + "expected": 0, + "exit": 0, + "equal_full_six_body_digest": "81b11f8bb36c0b9ffde36bbcfc4e9d067e3b8689013326ec07d83efb85513079" + }, + { + "label": "changed-live-PC", + "case": "iops", + "expected": 0, + "exit": 0, + "equal_full_six_body_digest": "0ec3a8c05ef624bd337527a39b4a12fdf1bfb7fba2698d59863d05d11b607e85" + }, + { + "label": "spare-frame-forward-read", + "case": "iops", + "expected": 4, + "exit": 0, + "equal_full_six_body_digest": "1cb616e44faa83cd3103d28a863640ed3557b9cfe192884ea68b7e26f603c4cc" + }, + { + "label": "spare-frame-forward-write", + "case": "iops", + "expected": 6, + "exit": 0, + "equal_full_six_body_digest": "64cb12526843f1bf7668b1cb8215249a08df4984ca53199c6d1ec323dd8c264d" + }, + { + "label": "128-hop-forward-read-chain", + "case": "iops", + "expected": 4, + "exit": 0, + "equal_full_six_body_digest": "976c02aed96ad3da37057dee9f0a800a8a5d12d1aa45f66b40cf2899e7159630" + }, + { + "label": "reject-self-cycle", + "case": "iops", + "expected": null, + "exit": 4, + "equal_full_six_body_digest": "13c301c4d167eb2e1ad5c1d154d67f5a13f17e1a13f363031b3f1ebc88c37c17" + }, + { + "label": "reject-two-slot-cycle", + "case": "iops", + "expected": null, + "exit": 4, + "equal_full_six_body_digest": "eaf14e95060bee40474b92f407ddc5755e22ea9c55d13ee67802061c77848608" + }, + { + "label": "reject-out-of-range-read", + "case": "iops", + "expected": null, + "exit": 4, + "equal_full_six_body_digest": "660f9ac0f78360662f2ae6789875d33e95c178043f8b27ac5eceb92d243c5991" + }, + { + "label": "reject-metadata-reference", + "case": "iops", + "expected": null, + "exit": 4, + "equal_full_six_body_digest": "109cf8a11791a3d9c21dfb5ce8838a2f7fa9db7a62059925124095bab346dda2" + }, + { + "label": "reject-bad-tag", + "case": "iops", + "expected": null, + "exit": 4, + "equal_full_six_body_digest": "2ffef091b8311d07e2aa8e1bb845721480f1c6264749954e360c888ba63f10e1" + }, + { + "label": "reject-bad-bool", + "case": "iops", + "expected": null, + "exit": 4, + "equal_full_six_body_digest": "83175e0d0b9268f65fed8f3b483d533f17afb26d2c83e3018ccd569fe546277d" + }, + { + "label": "reject-out-of-range-write", + "case": "iops", + "expected": null, + "exit": 4, + "equal_full_six_body_digest": "4b7782f0d937d86784f7909d02f7dd24132d172b2127dd649cd980e24620eba8" + } + ], + "worker_invocations": 150, + "standard_suite": { + "checks": 125, + "boundary_restarts": 32, + "sigkill_restarts": 0, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "fixture_sha256": "37336835022e18309ce419082dc93655a7dcca486dd194fa2baa93d8ee4de5cb", + "script_sha256": "b2c7eef3f133e5bc1843c354bfd8202f84d866ac65b82fcebe2899ded25395c8" +} diff --git a/bench/native/results/fast/medians-us.json b/bench/native/results/fast/medians-us.json new file mode 100644 index 00000000..ae291abb --- /dev/null +++ b/bench/native/results/fast/medians-us.json @@ -0,0 +1,662 @@ +{ + "iops(500)": { + "medians_us": { + "aot": 51.717, + "fast-commit": 50.899, + "fast-pc": 42.061, + "fast": 33.603, + "fast-slots": 33.664, + "fast-address": 28.455, + "fast-loop": 24.868, + "python": 25.842 + }, + "wall_medians_ms": { + "aot": 7.851549, + "fast-commit": 7.752053, + "fast-pc": 7.624238, + "fast": 7.582896, + "fast-slots": 7.786924, + "fast-address": 7.783844, + "fast-loop": 7.753601, + "python": 26.456271 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.006523422377081, + "minimum": 0.970887602031741, + "maximum": 1.0725576675383475 + }, + "fast-pc": { + "median": 1.2233140980756694, + "minimum": 0.8666021836781533, + "maximum": 1.32744004057677 + }, + "fast": { + "median": 1.5585859803507927, + "minimum": 0.9801323254981056, + "maximum": 1.620330788053893 + }, + "fast-slots": { + "median": 1.5318562838778471, + "minimum": 1.2979350308149384, + "maximum": 1.609181940621889 + }, + "fast-address": { + "median": 1.764418272662384, + "minimum": 1.5633917775090689, + "maximum": 1.9314707432788614 + }, + "fast-loop": { + "median": 2.061834708766894, + "minimum": 1.800625488663018, + "maximum": 2.2573623033638643 + } + }, + "jit_medians_us": {} + }, + "iops(1000)": { + "medians_us": { + "aot": 98.222, + "fast-commit": 97.106, + "fast-pc": 79.26, + "fast": 61.736, + "fast-slots": 61.563, + "fast-address": 52.315, + "fast-loop": 44.891, + "python": 49.532 + }, + "wall_medians_ms": { + "aot": 7.634731, + "fast-commit": 7.56858, + "fast-pc": 7.708155, + "fast": 7.691308, + "fast-slots": 7.620966, + "fast-address": 7.662072, + "fast-loop": 7.790753, + "python": 26.402811 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.017306915516152, + "minimum": 0.8356913014585009, + "maximum": 1.1793479930763953 + }, + "fast-pc": { + "median": 1.2589820167399413, + "minimum": 1.1738603591595376, + "maximum": 1.3984284864162446 + }, + "fast": { + "median": 1.5822057372090803, + "minimum": 1.2717295700689202, + "maximum": 1.8651678113256447 + }, + "fast-slots": { + "median": 1.589677483741122, + "minimum": 1.3782273322660457, + "maximum": 1.8218178941539436 + }, + "fast-address": { + "median": 1.8700935310922397, + "minimum": 1.3428983337492029, + "maximum": 2.255813497894015 + }, + "fast-loop": { + "median": 2.211933057373036, + "minimum": 2.097965233795984, + "maximum": 2.6188450954081284 + } + }, + "jit_medians_us": {} + }, + "iops(2000)": { + "medians_us": { + "aot": 188.828, + "fast-commit": 192.529, + "fast-pc": 147.084, + "fast": 115.234, + "fast-slots": 116.385, + "fast-address": 98.886, + "fast-loop": 85.272, + "python": 95.076 + }, + "wall_medians_ms": { + "aot": 7.866996, + "fast-commit": 7.69268, + "fast-pc": 7.792817, + "fast": 7.572723, + "fast-slots": 7.582217, + "fast-address": 7.697096, + "fast-loop": 7.804833, + "python": 26.623626 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 0.9800965049421126, + "minimum": 0.9339429943939401, + "maximum": 1.0690278776597995 + }, + "fast-pc": { + "median": 1.2653487904576828, + "minimum": 1.185318208831813, + "maximum": 1.3783356286731119 + }, + "fast": { + "median": 1.6240672788243762, + "minimum": 1.5924466737247687, + "maximum": 1.7719249040265044 + }, + "fast-slots": { + "median": 1.6035155234281553, + "minimum": 1.527821154919777, + "maximum": 1.7567431352102885 + }, + "fast-address": { + "median": 1.9347982117955869, + "minimum": 1.0904846952308536, + "maximum": 2.0347843591163 + }, + "fast-loop": { + "median": 2.2091084898725444, + "minimum": 2.1079646627683895, + "maximum": 2.4074832686307666 + } + }, + "jit_medians_us": {} + }, + "iops(200000)": { + "medians_us": { + "aot": 17726.252, + "fast-commit": 17915.935, + "fast-pc": 14070.054, + "fast": 10955.043, + "fast-slots": 10832.367, + "fast-address": 9229.388, + "fast-loop": 8091.197, + "python": 9073.459 + }, + "wall_medians_ms": { + "aot": 25.552604, + "fast-commit": 25.656855, + "fast-pc": 21.988793, + "fast": 18.485718, + "fast-slots": 18.428185, + "fast-address": 16.773889, + "fast-loop": 15.989496, + "python": 35.221875 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 0.9919778188202276, + "minimum": 0.9404691857446142, + "maximum": 1.0990033729099418 + }, + "fast-pc": { + "median": 1.264387178023641, + "minimum": 1.2042374650440943, + "maximum": 1.3501145059984812 + }, + "fast": { + "median": 1.623494137226638, + "minimum": 1.5641606009905622, + "maximum": 1.7253384266774916 + }, + "fast-slots": { + "median": 1.6434616151660684, + "minimum": 1.5661499747819474, + "maximum": 1.7687961458469788 + }, + "fast-address": { + "median": 1.9025447247833143, + "minimum": 1.8597821342977685, + "maximum": 2.0718266807583654 + }, + "fast-loop": { + "median": 2.189723609201556, + "minimum": 2.1195692177544005, + "maximum": 2.3737136924705564 + } + }, + "jit_medians_us": {} + }, + "fib(8)": { + "medians_us": { + "aot": 17.169, + "fast-commit": 17.1, + "fast-pc": 14.51, + "fast": 12.556, + "fast-slots": 12.642, + "fast-address": 13.479, + "fast-loop": 12.735, + "python": 10.308 + }, + "wall_medians_ms": { + "aot": 7.802186, + "fast-commit": 7.655618, + "fast-pc": 7.757929, + "fast": 7.795822, + "fast-slots": 7.607935, + "fast-address": 7.596098, + "fast-loop": 7.873433, + "python": 26.595588 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.0045029239766081, + "minimum": 0.8180865603644647, + "maximum": 1.0737591114196459 + }, + "fast-pc": { + "median": 1.2003706607741107, + "minimum": 0.8033721673302856, + "maximum": 1.3198464054611392 + }, + "fast": { + "median": 1.359692867885696, + "minimum": 1.2848443328004873, + "maximum": 1.4336139646250097 + }, + "fast-slots": { + "median": 1.3587248853029583, + "minimum": 1.275999375390381, + "maximum": 1.4646098003629764 + }, + "fast-address": { + "median": 1.2736489004845322, + "minimum": 0.8443275658670861, + "maximum": 1.3322204911343571 + }, + "fast-loop": { + "median": 1.3282184450739691, + "minimum": 1.0070570395427505, + "maximum": 1.420873555942396 + } + }, + "jit_medians_us": {} + }, + "fib(9)": { + "medians_us": { + "aot": 24.56, + "fast-commit": 23.02, + "fast-pc": 19.896, + "fast": 16.421, + "fast-slots": 16.789, + "fast-address": 18.218, + "fast-loop": 16.582, + "python": 15.045 + }, + "wall_medians_ms": { + "aot": 7.808717, + "fast-commit": 7.831735, + "fast-pc": 7.714605, + "fast": 7.809249, + "fast-slots": 7.880256, + "fast-address": 7.800138, + "fast-loop": 7.80275, + "python": 26.391781 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.069733002308463, + "minimum": 1.0104096426163183, + "maximum": 1.5464391066160978 + }, + "fast-pc": { + "median": 1.2365258651812883, + "minimum": 0.8316811446090956, + "maximum": 1.8958979127918991 + }, + "fast": { + "median": 1.4890552666171344, + "minimum": 1.427637190787603, + "maximum": 2.1586470588235294 + }, + "fast-slots": { + "median": 1.4745437079731027, + "minimum": 1.014601674898003, + "maximum": 2.1857764012150813 + }, + "fast-address": { + "median": 1.344621513944223, + "minimum": 0.9598624301403056, + "maximum": 2.0223189683676845 + }, + "fast-loop": { + "median": 1.4811241104812447, + "minimum": 1.4332079592331959, + "maximum": 2.2150660952495924 + } + }, + "jit_medians_us": {} + }, + "fib(10)": { + "medians_us": { + "aot": 35.817, + "fast-commit": 34.175, + "fast-pc": 28.484, + "fast": 23.045, + "fast-slots": 22.94, + "fast-address": 24.977, + "fast-loop": 23.331, + "python": 19.751 + }, + "wall_medians_ms": { + "aot": 7.997636, + "fast-commit": 7.89336, + "fast-pc": 7.792399, + "fast": 7.644143, + "fast-slots": 7.784267, + "fast-address": 7.702926, + "fast-loop": 7.970528, + "python": 26.731555 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.0456001397705434, + "minimum": 0.8109815464734518, + "maximum": 1.443818457402694 + }, + "fast-pc": { + "median": 1.2584726457084778, + "minimum": 0.9439077260684561, + "maximum": 1.8016558418385553 + }, + "fast": { + "median": 1.5621003175708008, + "minimum": 1.1811559991906657, + "maximum": 2.238549195229016 + }, + "fast-slots": { + "median": 1.5511236202119707, + "minimum": 1.4427836708453874, + "maximum": 2.2007846556233654 + }, + "fast-address": { + "median": 1.4121382636655948, + "minimum": 1.364184877199768, + "maximum": 1.6254954558193537 + }, + "fast-loop": { + "median": 1.5313608961477618, + "minimum": 1.2072294952410405, + "maximum": 2.0472830494728305 + } + }, + "jit_medians_us": {} + }, + "fib(18)": { + "medians_us": { + "aot": 1453.177, + "fast-commit": 1293.408, + "fast-pc": 1058.203, + "fast": 771.736, + "fast-slots": 802.1, + "fast-address": 892.262, + "fast-loop": 787.231, + "python": 514.244 + }, + "wall_medians_ms": { + "aot": 9.464194, + "fast-commit": 9.158392, + "fast-pc": 8.874648, + "fast": 8.76657, + "fast-slots": 8.467554, + "fast-address": 8.472119, + "fast-loop": 8.438876, + "python": 27.074297 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.1173720580286053, + "minimum": 1.0693624767449106, + "maximum": 1.1555102187691166 + }, + "fast-pc": { + "median": 1.375592566298722, + "minimum": 1.2485496226451838, + "maximum": 1.4410469868545972 + }, + "fast": { + "median": 1.851748282289048, + "minimum": 1.5870702635639815, + "maximum": 1.9370549315599543 + }, + "fast-slots": { + "median": 1.8648809375389603, + "minimum": 1.6612130908626472, + "maximum": 1.9004590555395446 + }, + "fast-address": { + "median": 1.6342584615105564, + "minimum": 1.5133130269929844, + "maximum": 1.6846057855157333 + }, + "fast-loop": { + "median": 1.8543040309531098, + "minimum": 1.7658987905951875, + "maximum": 1.9397226487125754 + } + }, + "jit_medians_us": {} + }, + "nqueens(4)": { + "medians_us": { + "aot": 20.839, + "fast-commit": 20.748, + "fast-pc": 18.274, + "fast": 17.454, + "fast-slots": 17.693, + "fast-address": 16.632, + "fast-loop": 17.087, + "python": 21.17 + }, + "wall_medians_ms": { + "aot": 8.025917, + "fast-commit": 7.836484, + "fast-pc": 7.819315, + "fast": 7.748676, + "fast-slots": 8.192489, + "fast-address": 7.974402, + "fast-loop": 8.066837, + "python": 26.136798 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 0.9749084497490845, + "minimum": 0.7453992175047095, + "maximum": 1.0686666666666667 + }, + "fast-pc": { + "median": 1.1589047121570353, + "minimum": 1.0853566824237215, + "maximum": 1.2101010101010101 + }, + "fast": { + "median": 1.203731515711645, + "minimum": 1.1074117272823667, + "maximum": 1.2513201415888122 + }, + "fast-slots": { + "median": 1.16802438348573, + "minimum": 0.9211225583888863, + "maximum": 1.2376889601465872 + }, + "fast-address": { + "median": 1.2867237821274466, + "minimum": 1.141718935412782, + "maximum": 1.314514602914275 + }, + "fast-loop": { + "median": 1.2497971484873074, + "minimum": 1.1451484924053503, + "maximum": 1.376839289126696 + } + }, + "jit_medians_us": {} + }, + "nqueens(5)": { + "medians_us": { + "aot": 45.075, + "fast-commit": 41.962, + "fast-pc": 37.465, + "fast": 33.094, + "fast-slots": 33.518, + "fast-address": 30.146, + "fast-loop": 30.476, + "python": 36.982 + }, + "wall_medians_ms": { + "aot": 7.946678, + "fast-commit": 7.841, + "fast-pc": 7.725122, + "fast": 7.825514, + "fast-slots": 7.807144, + "fast-address": 7.755864, + "fast-loop": 7.954606, + "python": 26.231738 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.080834698383306, + "minimum": 0.8165169190638359, + "maximum": 1.4445377736054152 + }, + "fast-pc": { + "median": 1.2033022332236216, + "minimum": 1.1533260233918128, + "maximum": 1.3833305732333387 + }, + "fast": { + "median": 1.3730130273694274, + "minimum": 0.9159147869674186, + "maximum": 1.8107831903626397 + }, + "fast-slots": { + "median": 1.3605617568551323, + "minimum": 1.2280940731680197, + "maximum": 1.676808809612572 + }, + "fast-address": { + "median": 1.4952232468652558, + "minimum": 1.4271209606560578, + "maximum": 1.9676941714901064 + }, + "fast-loop": { + "median": 1.4626208449212026, + "minimum": 1.1545525645230466, + "maximum": 1.9444647667187656 + } + }, + "jit_medians_us": {} + }, + "nqueens(6)": { + "medians_us": { + "aot": 116.956, + "fast-commit": 105.083, + "fast-pc": 94.632, + "fast": 76.601, + "fast-slots": 77.364, + "fast-address": 71.031, + "fast-loop": 70.885, + "python": 78.917 + }, + "wall_medians_ms": { + "aot": 8.10764, + "fast-commit": 7.922762, + "fast-pc": 7.780097, + "fast": 7.695335, + "fast-slots": 7.810447, + "fast-address": 7.815204, + "fast-loop": 7.882181, + "python": 26.039688 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.1025773442356428, + "minimum": 1.0101079654298755, + "maximum": 1.173128901628464 + }, + "fast-pc": { + "median": 1.2456671311618186, + "minimum": 1.1769478903247645, + "maximum": 1.2728428660658517 + }, + "fast": { + "median": 1.507998378088499, + "minimum": 1.270264253433959, + "maximum": 1.6178550109438217 + }, + "fast-slots": { + "median": 1.4902409389380074, + "minimum": 1.3345961929403067, + "maximum": 1.5958390578999018 + }, + "fast-address": { + "median": 1.632355886139322, + "minimum": 1.385840894703524, + "maximum": 1.708414461611733 + }, + "fast-loop": { + "median": 1.644997046330417, + "minimum": 1.5801642671828582, + "maximum": 1.7214941022280472 + } + }, + "jit_medians_us": {} + }, + "nqueens(8)": { + "medians_us": { + "aot": 1506.605, + "fast-commit": 1308.514, + "fast-pc": 1150.653, + "fast": 957.467, + "fast-slots": 1007.802, + "fast-address": 847.675, + "fast-loop": 839.05, + "python": 806.565 + }, + "wall_medians_ms": { + "aot": 9.369523, + "fast-commit": 9.117301, + "fast-pc": 8.971438, + "fast": 8.570237, + "fast-slots": 8.791951, + "fast-address": 8.60825, + "fast-loop": 8.763933, + "python": 27.136678 + }, + "paired_aot_speedups": { + "fast-commit": { + "median": 1.1483529201941356, + "minimum": 1.13973725459343, + "maximum": 1.1894798221494 + }, + "fast-pc": { + "median": 1.3147018904763326, + "minimum": 1.2581444913226916, + "maximum": 1.3609792858855883 + }, + "fast": { + "median": 1.5942390356260543, + "minimum": 1.519173119215268, + "maximum": 1.6654496855716048 + }, + "fast-slots": { + "median": 1.50418927376394, + "minimum": 1.4587399661148777, + "maximum": 1.6816626312812284 + }, + "fast-address": { + "median": 1.7804382769476597, + "minimum": 1.7412461035248472, + "maximum": 1.836667720831878 + }, + "fast-loop": { + "median": 1.789799303883221, + "minimum": 1.6199856226037672, + "maximum": 1.846354951142469 + } + }, + "jit_medians_us": {} + } +} diff --git a/bench/native/results/fast/metadata.json b/bench/native/results/fast/metadata.json new file mode 100644 index 00000000..4d8415e7 --- /dev/null +++ b/bench/native/results/fast/metadata.json @@ -0,0 +1,247 @@ +{ + "cpu": 24, + "cpu_model": "Intel(R) Xeon(R) Gold 6418H", + "python": "3.10.12", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0", + "flags": [ + "-O3", + "-std=c11", + "-Wall", + "-Wextra", + "-Werror" + ], + "pairs": 9, + "warmups": 1, + "inputs": { + "iops": { + "kv_sha256": "360d3a2b7bd4d014255ba34cd86f6c72ee72a46b4787ed248ee5a6db96887dd7", + "python_sha256": "e53ef1d628cf1b39be8e2ee2e7ee04a9e0517403226e5f8f18ada9a44ce12d04", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\niops(n) -> r\n}\n", + "generated_c_sha256": "ef929eb7f7dea1fe901fcbac9fa5fc18af13919e96c57d129744caf3dd0e781b", + "scales": [ + 500, + 1000, + 2000, + 200000 + ], + "variants": { + "fast-commit": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 230663608, + "text_bytes": 11093, + "worker_sha256": "cf28a7c5d31ed81affda2d42f01b0b3c2bdabb97d3845860664fec437abd4e31", + "generated_c_sha256": "bc71a283d8add0e5908e9bb943e0118951938e7093fd84a49b363ab451b4e847" + }, + "fast-pc": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 210490286, + "text_bytes": 51120, + "worker_sha256": "65f4c15f3e2f496875db3fdd57abbede5724e258f6cf3c0d905379d553e7b7e8", + "generated_c_sha256": "3055cf364055dc41c5752e0ee80b3d813182e51f9862af7a331d5f5c1942015e" + }, + "fast": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 232163865, + "text_bytes": 51685, + "worker_sha256": "d0c902fb48f8d25c4a3326e7480990fd18c156dca414ba252e3f0ec1b35068a7", + "generated_c_sha256": "e93ee99a0f254a48706801e3fabcd69c2eff74aab4a2c98b251e33f434723dd0" + }, + "fast-slots": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 246384927, + "text_bytes": 51921, + "worker_sha256": "826ab61144e67165fbd5457ab043ac005647947cee49445915f7b71633b2e5b4", + "generated_c_sha256": "644bb50a88656900060512209b770f1bf7631e9bc11512393c4477a6661ea855" + }, + "fast-address": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 253863571, + "text_bytes": 52624, + "worker_sha256": "ae84af0da900fb7ac8cb97fab664d2188cb5aabd326a7c41a023928e25939b1e", + "generated_c_sha256": "c09bcf5e98cd23ef52b8e949e89c9add5592581303ff82549af8966b6768dfc1" + }, + "fast-loop": { + "jit_bytes": 0, + "loop_cached_functions": [ + "iops" + ], + "compile_ns": 284299705, + "text_bytes": 53968, + "worker_sha256": "0a21d3408e19815a9387727f860f9204b1639534d707e4536224894ba2d95030", + "generated_c_sha256": "e72fd66ab20f4951537ee41387ad6af41aa858c270168740c2db5355774c50c9" + } + }, + "aot_sha256": "9a3fe6451d94d3cc2f8cb4e3c135c89d49efa41c7b9f9496bc9fc7aeec3a1360", + "aot_text_bytes": 10316 + }, + "fib": { + "kv_sha256": "f9f308e2939ecd712442586ee87b8340f55331e75bcd6a6c6ffc12aea3a7bab4", + "python_sha256": "63a329cd3bbc9271f9142f9fa762b3389c17525679763a14e21a7138e12987fa", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\nfib(n) -> r\n}\n", + "generated_c_sha256": "07b55ab8792de8104e5df323ebae83bbb64e6ce22c75c4d6fe9ca374146ccf95", + "scales": [ + 8, + 9, + 10, + 18 + ], + "variants": { + "fast-commit": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 264232056, + "text_bytes": 11661, + "worker_sha256": "806be4408591ed586641c83f4f2b5868a7a63991abf38ecc5243f913103433eb", + "generated_c_sha256": "c3b011978a7fc2b5d07a27fa05d661d68fe33b866b891257216242e04e43411a" + }, + "fast-pc": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 223066487, + "text_bytes": 51529, + "worker_sha256": "dc6d0c93542b31cb8dcf603a8e68788ed0d56c3cc7bf4eb267303555bf3a3b55", + "generated_c_sha256": "e7daf1cec0677ee8092a5b8b3efc50d607523a73a83c75989b225fa806df61f9" + }, + "fast": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 252543689, + "text_bytes": 52093, + "worker_sha256": "0a33fb2f00a1b660f09af222f03100a0bb89626e375c55a63e577f8de8807cd1", + "generated_c_sha256": "05b08635846f8bbf602c2e51561fe04029d4ecca7f9e67d7bbe17f8a4baa1fbd" + }, + "fast-slots": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 258287662, + "text_bytes": 52194, + "worker_sha256": "c384e1d17b39d2f096d475ab523dbf9be5ede19c92440d75bc7b24d463811025", + "generated_c_sha256": "566d37b387f2de14f666e06e7b98d4dbd4a7fd796b29942c82dd7985e5cfacf7" + }, + "fast-address": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 284183787, + "text_bytes": 52941, + "worker_sha256": "2a66740f2cae4773f80b228d62b2393a3a34834908520e51b45a056a0652b6f0", + "generated_c_sha256": "5767ed134cbcc7e31a5a8cc3ba5dca3f5d6119cc2aa4ca09628e3ad9123946e7" + }, + "fast-loop": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 263952256, + "text_bytes": 52194, + "worker_sha256": "c384e1d17b39d2f096d475ab523dbf9be5ede19c92440d75bc7b24d463811025", + "generated_c_sha256": "566d37b387f2de14f666e06e7b98d4dbd4a7fd796b29942c82dd7985e5cfacf7" + } + }, + "aot_sha256": "1fbf2a34bc09aaab00fedb9746d502e9be8a12bc87f4e5119e41018fd7ada24a", + "aot_text_bytes": 10765 + }, + "nqueens": { + "kv_sha256": "e4ba6073d1cd9e76949e3b81b46604e28b97e712afd6f6158db811f7e97c169b", + "python_sha256": "61ebaeccf79bf06a85e213180930552748cca126ec60b8636a7ed7849765a8af", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\n1 << n -> sh\nsh - 1 -> all\nnq(0, 0, 0, all) -> r\n}\n", + "generated_c_sha256": "0d3c595d6ba9f9df24fe1e13c52c551859609ae64ce3e7acd64d272848e421e0", + "scales": [ + 4, + 5, + 6, + 8 + ], + "variants": { + "fast-commit": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 460243041, + "text_bytes": 22725, + "worker_sha256": "1985fa7e0c4a531b5a46305ed17dfcc7da028a01b6680e17f44b292ede75a47e", + "generated_c_sha256": "c91ee4354fc0ddd7a0ad6e85d809b03edf111f35d55bbeda3ceb4eb052770118" + }, + "fast-pc": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 353801709, + "text_bytes": 61185, + "worker_sha256": "1048df7b6bec14879985e89c094b9ec9108c69f9237130df99327578244a030f", + "generated_c_sha256": "9810bb4a4529343b58db5d3edbd66904676ed2935fa159578bd6a65e9d7a2713" + }, + "fast": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 623149412, + "text_bytes": 63433, + "worker_sha256": "cb1ed8b353dcf14f2220eadcb3b4b87bd0b7994bcfc01a41c14c8a9a112f157d", + "generated_c_sha256": "3e53d6932c0fc97f601d70b581082d77d3c65f49690fb19974b675dcb377dbce" + }, + "fast-slots": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 446442707, + "text_bytes": 63741, + "worker_sha256": "87d212423814a80ab89568ef79815d9c680e4f962138a162b07fed409b51bce8", + "generated_c_sha256": "39d043bdfb095b951ffbca33f56613c62871a03fd0c216a5be630e468efc2c32" + }, + "fast-address": { + "jit_bytes": 0, + "loop_cached_functions": [], + "compile_ns": 464726286, + "text_bytes": 64412, + "worker_sha256": "6a64b42d07f234abd442e19380ac103cc16ed41fbe65c4d7ecbfe175c6725503", + "generated_c_sha256": "c3adbfa512979f54704382f5d0adb0564cbe86531f701841a0c69e730acc81af" + }, + "fast-loop": { + "jit_bytes": 0, + "loop_cached_functions": [ + "nq" + ], + "compile_ns": 579677888, + "text_bytes": 66422, + "worker_sha256": "15556bda9e4557146a74b2f0eb9ebb99ad84bd17b1a85783c8d94b3884ea999f", + "generated_c_sha256": "bf693b036f8500a73385d914951ffd45d13fc3a9fab71e6b7b880cad4ec4b2bb" + } + }, + "aot_sha256": "ff84d32d14ee89a49a0928f21f3029a1599e3b03dc4a2cb436e9dc3dd15e3118", + "aot_text_bytes": 20157 + } + }, + "variants": [ + "aot", + "fast-commit", + "fast-pc", + "fast", + "fast-slots", + "fast-address", + "fast-loop", + "python" + ], + "timing": "execute includes redo; JIT preparation separate; wall includes init and run; build timings are one observation", + "libraries": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "kvlang": { + "path": "/tmp/kvlang-perf-current/bin/kvlang", + "sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a" + }, + "loaded": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "samples": 864, + "equal_final_state_groups": 108, + "generator_sha256": { + "compile.py": "d45998c321000947c0504e77c02896fd2ad0cf0a424e1eeaa3b13a5d50998c34", + "strategies.py": "db0b8e0cb8125e082572bde0954cb9658d522de04395c7dba28c8871edc0864c", + "strategies.c.in": "471fe04023854f2e2e7d3f5466f0309a6b25870c9114b930226038315a982b81", + "worker.c.in": "c52890d0108cb1900bc534dc3567237e428a524314e70b16918e922cd3f6c385", + "run.py": "840ea3d9d879b3be393fd5fd9b3d14b52af84611112b5b7959cbfde0e7049070", + "fast.py": "8cf24f4bc38addba0f9ce074b2140c330f708eb2049498360a6c3281f0ba4473", + "fast.c.in": "a0f8f31996dc453ca1695da0ffcf0f05793f34d170377eef1f2835466d13fa7c" + } +} diff --git a/bench/native/results/fast/rejected.json b/bench/native/results/fast/rejected.json new file mode 100644 index 00000000..184b583d --- /dev/null +++ b/bench/native/results/fast/rejected.json @@ -0,0 +1,129 @@ +{ + "scope": "Exploratory sequential trials; implementations not retained. Different rounds must not be pooled with the final benchmark. Raw individual timings are not retained for the two nine-pair trials.", + "trials": { + "unchanged_tag": { + "pairs": 3, + "warmups": 1, + "cpu": 24, + "state_comparison": "ignore inactive journal payload", + "large_input_medians_us": { + "iops(200000)": { + "fast": 11375.948, + "fast-tag": 12012.936, + "fast-tag-guarded": 15121.454 + }, + "fib(18)": { + "fast": 860.3, + "fast-tag": 859.373, + "fast-tag-guarded": 728.784 + }, + "nqueens(8)": { + "fast": 859.431, + "fast-tag": 869.544, + "fast-tag-guarded": 1084.028 + } + }, + "generated_c_sha256": { + "iops": { + "fast": "ed867297100ba7e48e24766f81d577f00daf28ab7f5609d41284e01c3b56c2e4", + "fast-tag": "3fc8cbf18a45f352966b277b42e37964ccb05f146abe2a5a3be4ed5ad965f15c", + "fast-tag-guarded": "759bd0c74ecf4155affe81647b8fe0627ff902081be1ae1d274a7c8af7349eae" + }, + "fib": { + "fast": "e9171d6d2f4f7954658b6f01a780aeed659bb5cd74c6d6097cf5d8fb5c3ca4b4", + "fast-tag": "2971a92fa65c9f53374bdef0a2841d9713fdd12d0bc7e724fcfc656f61709ebb", + "fast-tag-guarded": "7f4ff886db31eb2d14e2be245b040a8f5f0210130128545e99b4efcb6b1808f6" + }, + "nqueens": { + "fast": "c32c6615591a62fdd1dc7bf66999278c6091fd9970c7a587a8abc41d76beb9ec", + "fast-tag": "88b5ae00c70c8dcd0a8dac5fea6135973daf68357023dd6c3dc3ba5a076b4030", + "fast-tag-guarded": "cc4747d2d5cf3e7fc982a2b7a0cf7b447bf7e1cf8171c06f81189b20092c7812" + } + } + }, + "ascii_row_dispatch": { + "pairs": 3, + "warmups": 1, + "cpu": 24, + "state_comparison": "all six raw KV bodies", + "large_input_medians_us": { + "iops(200000)": { + "fast-slots": 10338.149, + "fast-dispatch": 11589.859 + }, + "fib(18)": { + "fast-slots": 746.995, + "fast-dispatch": 847.891 + }, + "nqueens(8)": { + "fast-slots": 801.906, + "fast-dispatch": 890.446 + } + }, + "generated_c_sha256": { + "iops": { + "fast-slots": "efb56fd62c98a113a7db94172cda113ae16b0c6010dfdf56a9f433d5a4dddd9d", + "fast-dispatch": "9eb078c84ef64dd4343bb8a65d7553ce8f41faa35a2d324745e359e580ec2eac" + }, + "fib": { + "fast-slots": "5810e0a9223662904f6585818009e1a53694483717875c1cba440094bf32bf4e", + "fast-dispatch": "8c973dfb95033b6f7ccc81cb62ad1641a0fa9e963586175966657ea0e78f06ed" + }, + "nqueens": { + "fast-slots": "da6982e5a4f1c347768d1a0771942683b1c34b27a3aeda67b5aac062c43ca236", + "fast-dispatch": "c30d8ed3f62aa685692f9aa5b5ebe6cb7f823a88554518b4d6058b8437bdb832" + } + } + }, + "frame_generations": { + "pairs": 9, + "warmups": 0, + "cpu": 24, + "state_comparison": "logical frames, PC, constants, status, journal marker; distinct program IDs", + "large_input_medians_ms": { + "iops": { + "slots": 10.031082, + "epoch": 12.024624 + }, + "fib": { + "slots": 0.73512, + "epoch": 0.700077 + }, + "nqueens": { + "slots": 0.801759, + "epoch": 0.880173 + } + }, + "generated_c_sha256": { + "iops": "6ce8495ef29b5bb06038c775cad54f3fdc47f082d02219beb00752b848409632", + "fib": "853464caeb5ed7008282311f602e1e392e0a7b34a284ee9ebfaef790f2ab0fce", + "nqueens": "2529f3f2e8e874db43ce3d076b0dd47ab8496884f6e6f65c2301e6207565f7fa" + } + }, + "direct_generated_application": { + "pairs": 9, + "warmups": 0, + "cpu": 24, + "state_comparison": "all six raw KV bodies", + "large_input_medians_ms": { + "iops": { + "slots": 10.170046, + "direct": 9.866833 + }, + "fib": { + "slots": 0.755063, + "direct": 0.770076 + }, + "nqueens": { + "slots": 0.802015, + "direct": 0.807806 + } + }, + "generated_c_sha256": { + "iops": "924e470115b3e072baacc5831cc9b9bc797cdbfed9d047182fc709cce0b8c0f0", + "fib": "aafed2266de01be91f0aa354d188a86079b0aa5f6a973fe745bbb59269224168", + "nqueens": "0c2bfd6ed47353ca12b3a26772f64a98f92eae3c6ac86acb44a325b52dfc74f1" + } + } + } +} diff --git a/bench/native/results/fast/samples.csv b/bench/native/results/fast/samples.csv new file mode 100644 index 00000000..3af7f079 --- /dev/null +++ b/bench/native/results/fast/samples.csv @@ -0,0 +1,865 @@ +case,scale,pair,variant,kernel_ns,wall_ns,result,state_sha256,jit_ns +iops,500,0,aot,51717,7614565,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,fast-commit,50899,7361469,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,fast-pc,43678,7567381,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,fast,33182,7752277,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,fast-slots,33761,7893879,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,fast-address,33080,7801153,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,fast-loop,25083,7512067,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,python,25773,26456271,500,,0 +iops,500,1,python,25614,26368630,500,,0 +iops,500,1,fast-loop,24347,8054703,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,fast-address,28455,7463191,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,fast-slots,34154,7786924,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,fast,33919,7584868,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,fast-pc,41403,7490357,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,fast-commit,51242,8419386,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,aot,54960,7814604,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,aot,49439,7939123,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,fast-commit,50815,7698172,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,fast-pc,41081,7345811,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,fast,34666,7582896,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,fast-slots,33664,7411467,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,fast-address,28020,7519449,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,fast-loop,25565,7632532,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,python,26074,26504620,500,,0 +iops,500,3,python,25064,25983871,500,,0 +iops,500,3,fast-loop,24918,8502542,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,fast-address,28444,7831416,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,fast-slots,33254,7869111,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,fast,33115,7790835,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,fast-pc,39944,7899498,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,fast-commit,50744,7576100,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,aot,49385,8114547,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,aot,50666,8092678,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,fast-commit,50792,8389235,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,fast-pc,41417,7624238,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,fast,32418,7493779,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,fast-slots,33007,7932674,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,fast-address,28753,7772937,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,fast-loop,28138,7753601,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,python,27055,26608146,500,,0 +iops,500,5,python,26250,26037055,500,,0 +iops,500,5,fast-loop,24802,8166482,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,fast-address,28646,7783844,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,fast-slots,33758,7517057,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,fast,33603,7419556,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,fast-pc,42487,7654619,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,fast-commit,52199,7994654,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,aot,53167,7431391,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,aot,51997,7851549,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,fast-commit,51660,7857449,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,fast-pc,42061,7627875,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,fast,53051,7494065,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,fast-slots,32549,8020165,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,fast-address,28630,8160277,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,fast-loop,24868,7952666,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,python,25048,26610310,500,,0 +iops,500,7,python,26746,25865539,500,,0 +iops,500,7,fast-loop,24314,7637952,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,fast-address,27932,7795101,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,fast-slots,40727,7619853,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,fast,33216,7581849,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,fast-pc,60998,7481894,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,fast-commit,51695,7752053,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,aot,52861,7852020,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,aot,49124,7667661,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,fast-commit,50597,7679399,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,fast-pc,42893,7627724,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,fast,35073,7696680,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,fast-slots,33529,7774532,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,fast-address,28282,7476826,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,fast-loop,24612,7559650,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,python,25842,26556565,500,,0 +iops,1000,0,aot,95573,7491628,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,fast-commit,114364,7550056,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,fast-pc,75907,7481628,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,fast,60512,7306642,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,fast-slots,60121,7268644,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,fast-address,51106,7796920,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,fast-loop,45397,7384925,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,python,48820,26402811,1000,,0 +iops,1000,1,python,49027,26163490,1000,,0 +iops,1000,1,fast-loop,45030,8032032,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,fast-address,70605,7701927,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,fast-slots,61172,7556693,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,fast,60720,7789754,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,fast-pc,79260,7708155,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,fast-commit,96333,7505873,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,aot,100788,7533753,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,aot,96874,7745435,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,fast-commit,98262,7568580,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,fast-pc,82526,7548491,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,fast,76175,7639812,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,fast-slots,62868,7554776,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,fast-address,72138,7453171,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,fast-loop,44945,7790753,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,python,51863,27416835,1000,,0 +iops,1000,3,python,48591,25867591,1000,,0 +iops,1000,3,fast-loop,44888,7867813,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,fast-address,50425,9559931,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,fast-slots,68710,7738694,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,fast,62322,7850819,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,fast-pc,79367,7709526,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,fast-commit,97722,7451852,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,aot,94698,7696914,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,aot,99391,7594587,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,fast-commit,96767,7816040,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,fast-pc,82092,7739067,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,fast,62818,7691308,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,fast-slots,63659,7620966,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,fast-address,52743,7648215,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,fast-loop,44934,7460664,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,python,49319,26774111,1000,,0 +iops,1000,5,python,50010,25687143,1000,,0 +iops,1000,5,fast-loop,43969,7685268,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,fast-address,51045,7525124,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,fast-slots,63205,7218458,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,fast,61736,7466224,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,fast-pc,82341,7496100,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,fast-commit,97637,8130145,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,aot,115148,7564173,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,aot,93414,7746612,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,fast-commit,96975,8075634,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,fast-pc,78376,8124049,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,fast,60043,7857485,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,fast-slots,61563,10806554,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,fast-address,52315,9469465,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,fast-loop,44526,7907748,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,python,50334,26890928,1000,,0 +iops,1000,7,python,49532,25977971,1000,,0 +iops,1000,7,fast-loop,44178,8146456,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,fast-address,53420,7662072,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,fast-slots,61074,7872240,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,fast,61262,7514154,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,fast-pc,78017,7541927,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,fast-commit,96551,7557309,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,aot,98222,7634731,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,aot,99998,8375198,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,fast-commit,97106,8401304,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,fast-pc,78364,7723644,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,fast,62799,7703216,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,fast-slots,61167,7715389,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,fast-address,50503,7624546,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,fast-loop,44891,7779232,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,python,52576,26637106,1000,,0 +iops,2000,0,aot,189752,7741341,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,fast-commit,203173,7775679,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,fast-pc,143250,8176664,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,fast,117753,8064661,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,fast-slots,116385,7975237,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,fast-address,98048,7610055,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,fast-loop,85180,7785711,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,python,118249,26754854,2000,,0 +iops,2000,1,python,94957,25624247,2000,,0 +iops,2000,1,fast-loop,82711,8348128,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,fast-address,98466,7801025,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,fast-slots,118504,7582217,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,fast,115234,7500111,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,fast-pc,146981,7792817,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,fast-commit,195037,7692680,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,aot,183504,7770204,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,aot,185004,7849586,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,fast-commit,188983,7595053,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,fast-pc,146109,7751224,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,fast,113914,7866893,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,fast-slots,115374,7966048,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,fast-address,169653,7993558,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,fast-loop,84610,7504501,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,python,95726,26978901,2000,,0 +iops,2000,3,python,96495,25921278,2000,,0 +iops,2000,3,fast-loop,88423,7804833,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,fast-address,100713,7697096,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,fast-slots,113817,7571912,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,fast,115422,7400784,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,fast-pc,147084,7542012,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,fast-commit,195865,7481646,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,aot,195336,7633933,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,aot,188697,7866996,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,fast-commit,192529,7885730,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,fast-pc,151328,7711842,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,fast,112395,7537141,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,fast-slots,115057,7483197,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,fast-address,97528,7675172,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,fast-loop,85503,8082246,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,python,96101,26623626,2000,,0 +iops,2000,5,python,95076,26402547,2000,,0 +iops,2000,5,fast-loop,85754,7990832,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,fast-address,119030,7625233,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,fast-slots,123593,7642975,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,fast,116819,7572723,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,fast-pc,149230,7881144,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,fast-commit,191959,7525791,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,aot,188828,7890901,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,aot,183492,8038306,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,fast-commit,193300,7647766,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,fast-pc,154804,7675812,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,fast,114900,7564719,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,fast-slots,118961,7779289,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,fast-address,98886,7504339,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,fast-loop,87047,7565996,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,python,94995,26661905,2000,,0 +iops,2000,7,python,94840,26078114,2000,,0 +iops,2000,7,fast-loop,85272,7793208,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,fast-address,98165,7838019,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,fast-slots,119929,7569258,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,fast,117445,7890536,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,fast-pc,154168,7842746,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,fast-commit,188590,7856878,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,aot,190875,7978706,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,aot,202166,8005753,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,fast-commit,189112,8284956,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,fast-pc,146674,7963083,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,fast,114094,7679046,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,fast-slots,115080,7569023,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,fast-address,99355,7881926,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,fast-loop,83974,7910808,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,python,94252,27005445,2000,,0 +iops,200000,0,aot,17726252,25552604,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,fast-commit,18002538,25937554,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,fast-pc,14649877,22485955,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,fast,11332757,19122700,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,fast-slots,10741779,18234980,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,fast-address,9108294,16696166,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,fast-loop,8091197,16120035,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,python,9211630,35594959,200000,,0 +iops,200000,1,python,8855949,34267184,200000,,0 +iops,200000,1,fast-loop,8187621,16166311,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,fast-address,9178636,16683216,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,fast-slots,11066441,18306139,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,fast,11202548,19343157,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,fast-pc,13470910,21030938,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,fast-commit,17915935,25656855,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,aot,18187271,25591892,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,aot,17387042,25039291,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,fast-commit,17527652,25360539,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,fast-pc,13751359,21254615,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,fast,10889166,18428575,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,fast-slots,11034439,18666296,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,fast-address,9337766,17475796,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,fast-loop,8135095,15989496,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,python,9849621,36188512,200000,,0 +iops,200000,3,python,8661639,34207726,200000,,0 +iops,200000,3,fast-loop,8047095,15675759,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,fast-address,8928168,16502714,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,fast-slots,10801481,18428185,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,fast,10915723,18485718,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,fast-pc,13791238,21404073,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,fast-commit,18540217,26949987,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,aot,18250782,25947045,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,aot,17487948,25427169,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,fast-commit,17409610,24877042,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,fast-pc,13934917,21767343,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,fast,10594039,18161683,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,fast-slots,11016121,18991136,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,fast-address,9403224,17396085,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,fast-loop,8064146,15534122,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,python,9090789,36118657,200000,,0 +iops,200000,5,python,9073459,34706042,200000,,0 +iops,200000,5,fast-loop,8177443,16056673,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,fast-address,9411784,17305662,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,fast-slots,10754588,18288820,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,fast,10682830,18218429,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,fast-pc,14070054,21988793,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,fast-commit,18141289,25689583,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,aot,17906340,25923098,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,aot,17358157,25336027,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,fast-commit,18456912,26268171,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,fast-pc,14414231,22080542,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,fast,11026737,18572407,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,fast-slots,11083330,18537677,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,fast-address,9152446,16773080,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,fast-loop,8189474,16064312,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,python,9016710,35519050,200000,,0 +iops,200000,7,python,9121011,35200258,200000,,0 +iops,200000,7,fast-loop,7936087,15902889,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,fast-address,9229388,16875283,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,fast-slots,10665468,18300876,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,fast,10955043,18700502,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,fast-pc,14377177,22216766,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,fast-commit,17353884,24826549,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,aot,17331034,25271712,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,aot,19160249,27017894,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,fast-commit,17434204,25399025,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,fast-pc,14301839,22028271,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,fast,11105212,18415533,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,fast-slots,10832367,18808140,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,fast-address,9247998,16773889,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,fast-loop,8071845,15823029,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,python,8856534,35221875,200000,,0 +fib,8,0,aot,16879,7609345,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,fast-commit,17540,7626539,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,fast-pc,15598,7641070,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,fast,13137,7652561,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,fast-slots,12599,7732309,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,fast-address,13968,8015307,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,fast-loop,12708,8176103,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,python,10759,26930752,21,,0 +fib,8,1,python,9755,25740082,21,,0 +fib,8,1,fast-loop,12689,8162381,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,fast-address,20344,7596098,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,fast-slots,12642,7561518,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,fast,12633,7795822,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,fast-pc,13944,7986307,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,fast-commit,17100,7713882,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,aot,17177,7842319,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,aot,17086,7802186,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,fast-commit,16878,7605559,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,fast-pc,15267,7689915,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,fast,13103,8247416,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,fast-slots,12950,7510484,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,fast-address,13415,7642334,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,fast-loop,13032,7661766,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,python,10283,26595588,21,,0 +fib,8,3,python,10818,25637875,21,,0 +fib,8,3,fast-loop,17146,8135050,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,fast-address,13207,7702543,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,fast-slots,12392,7581187,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,fast,12319,7435648,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,fast-pc,14107,7805015,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,fast-commit,17030,7852549,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,aot,17267,7835788,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,aot,18561,8281050,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,fast-commit,17286,7859981,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,fast-pc,14063,8052562,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,fast,12947,7821074,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,fast-slots,12673,7941190,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,fast-address,14122,7739721,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,fast-loop,13634,7873433,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,python,9916,26735464,21,,0 +fib,8,5,python,9823,25606703,21,,0 +fib,8,5,fast-loop,12802,7920886,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,fast-address,13590,7546716,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,fast-slots,12080,7607935,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,fast,12555,7687573,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,fast-pc,14975,7391336,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,fast-commit,16788,7667240,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,aot,17169,7584917,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,aot,17957,7734836,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,fast-commit,21950,7617136,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,fast-pc,14510,7880094,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,fast,12556,8324801,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,fast-slots,12690,7660354,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,fast-address,13479,7570222,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,fast-loop,12638,7541038,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,python,10308,26655707,21,,0 +fib,8,7,python,10357,25682981,21,,0 +fib,8,7,fast-loop,12735,7773134,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,fast-address,13123,7566572,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,fast-slots,12433,7744209,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,fast,12469,7849395,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,fast-pc,14029,7493807,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,fast-commit,17326,7529807,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,aot,16840,7949926,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,aot,16343,7741576,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,fast-commit,16714,7655618,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,fast-pc,20343,7757929,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,fast,12535,7721254,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,fast-slots,12808,7501237,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,fast-address,13371,7581762,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,fast-loop,12467,7634453,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,python,10541,26740372,21,,0 +fib,9,0,aot,24414,7706819,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,fast-commit,22813,7735447,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,fast-pc,29355,7656587,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,fast,16291,7442125,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,fast-slots,16649,7496761,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,fast-address,18240,7434881,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,fast-loop,16387,7651388,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,python,15045,26391781,34,,0 +fib,9,1,python,15333,26350654,34,,0 +fib,9,1,fast-loop,17084,7897946,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,fast-address,17471,7705903,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,fast-slots,16415,7757916,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,fast,17585,7403195,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,fast-pc,29423,7562304,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,fast-commit,23729,7754094,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,aot,25105,7933729,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,aot,23975,7698085,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,fast-commit,23728,8112902,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,fast-pc,19389,7842478,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,fast,16421,9029273,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,fast-slots,17729,8142409,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,fast-address,18025,7950998,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,fast-loop,16440,7802750,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,python,15129,26614128,34,,0 +fib,9,3,python,14672,25998700,34,,0 +fib,9,3,fast-loop,16567,8690154,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,fast-address,18146,9132245,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,fast-slots,16789,7874417,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,fast,17000,7915894,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,fast-pc,19356,9392460,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,fast-commit,23730,8389990,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,aot,36697,7901659,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,aot,26054,7748803,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,fast-commit,22724,7831735,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,fast-pc,19896,7714605,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,fast,17497,8081785,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,fast-slots,17123,8049517,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,fast-address,18218,7941078,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,fast-loop,16670,7786161,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,python,15882,26940724,34,,0 +fib,9,5,python,14219,26382022,34,,0 +fib,9,5,fast-loop,16996,8090443,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,fast-address,18451,7800138,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,fast-slots,16328,8138449,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,fast,16181,7809249,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,fast-pc,20200,7984276,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,fast-commit,23168,7762672,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,aot,26028,7676211,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,aot,24172,7926506,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,fast-commit,22680,7843710,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,fast-pc,18936,8061205,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,fast,16342,7703521,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,fast-slots,17231,7880256,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,fast-address,18396,7758578,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,fast-loop,16766,8249412,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,python,15635,26657392,34,,0 +fib,9,7,python,14202,25755329,34,,0 +fib,9,7,fast-loop,16484,7772280,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,fast-address,17570,7414986,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,fast-slots,23285,7736014,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,fast,16458,7642259,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,fast-pc,19365,7371302,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,fast-commit,23020,7772077,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,aot,23625,7808717,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,aot,24560,7928077,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,fast-commit,22959,7966870,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,fast-pc,20001,7554924,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,fast,16339,8340325,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,fast-slots,16656,8157118,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,fast-address,25587,8178392,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,fast-loop,16582,7374477,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,python,14442,26696445,34,,0 +fib,10,0,aot,50486,7864086,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,fast-commit,34967,7585699,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,fast-pc,28022,7743292,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,fast,22553,7456437,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,fast-slots,22940,7572875,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,fast-address,34786,7576012,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,fast-loop,24660,7970528,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,python,19933,27031777,55,,0 +fib,10,1,python,19490,25870483,55,,0 +fib,10,1,fast-loop,22856,7903421,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,fast-address,25514,7486704,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,fast-slots,24888,7552196,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,fast,22987,7496287,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,fast-pc,28533,7558658,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,fast-commit,34342,8211158,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,aot,35908,8275345,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,aot,35271,8139752,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,fast-commit,33732,8036679,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,fast-pc,37367,7951416,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,fast,23045,8328228,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,fast-slots,22739,8315496,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,fast-address,25855,8587124,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,fast-loop,23116,8592157,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,python,19751,27342024,55,,0 +fib,10,3,python,19045,26664933,55,,0 +fib,10,3,fast-loop,23331,8634082,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,fast-address,25001,8604806,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,fast-slots,23471,8115025,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,fast,22845,7832216,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,fast-pc,28052,8009853,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,fast-commit,34175,7930360,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,aot,34547,7873992,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,aot,40600,7874759,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,fast-commit,34007,7753926,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,fast-pc,28638,7911607,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,fast,23605,7693062,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,fast-slots,22756,7881888,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,fast-address,24977,8161737,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,fast-loop,23751,8283988,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,python,19209,26912465,55,,0 +fib,10,5,python,20109,26379728,55,,0 +fib,10,5,fast-loop,23017,8776783,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,fast-address,24791,7702926,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,fast-slots,22912,7786605,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,fast,23437,7590119,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,fast-pc,29138,7695861,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,fast-commit,34755,7636644,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,aot,39415,8489053,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,aot,35817,7997636,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,fast-commit,44165,7893360,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,fast-pc,27782,7792399,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,fast,22736,7644143,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,fast-slots,24038,7784267,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,fast-address,24860,7592763,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,fast-loop,23389,7372347,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,python,21208,26685222,55,,0 +fib,10,7,python,18411,26849156,55,,0 +fib,10,7,fast-loop,23206,7770820,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,fast-address,24856,7799932,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,fast-slots,23188,7566556,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,fast,29654,7581026,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,fast-pc,27942,7672456,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,fast-commit,33974,7722025,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,aot,35026,8008347,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,aot,35134,7756578,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,fast-commit,33718,7932664,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,fast-pc,28484,7970948,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,fast,23419,7668055,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,fast-slots,22538,7514127,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,fast-address,24880,7638108,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,fast-loop,29103,7665378,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,python,19913,26731555,55,,0 +fib,18,0,aot,1456746,9944448,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,fast-commit,1289436,9351712,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,fast-pc,1070657,9091081,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,fast,770184,8797667,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,fast-slots,876917,9352865,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,fast-address,907376,8605333,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,fast-loop,787231,9334255,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,python,524081,27691186,2584,,0 +fib,18,1,python,547660,26741742,2584,,0 +fib,18,1,fast-loop,791637,9610774,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,fast-address,883897,9048741,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,fast-slots,808365,8521879,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,fast,768702,8843360,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,fast-pc,1033289,8682280,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,fast-commit,1361647,9345639,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,aot,1489018,9262205,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,aot,1453177,9246426,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,fast-commit,1300531,8904820,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,fast-pc,1042311,8874648,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,fast,765236,8766570,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,fast-slots,766527,8543088,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,fast-address,883597,8472119,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,fast-loop,766285,8363459,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,python,535764,27378619,2584,,0 +fib,18,3,python,505526,26881223,2584,,0 +fib,18,3,fast-loop,798740,8438876,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,fast-address,932057,8446567,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,fast-slots,816048,8467554,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,fast,771736,9018854,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,fast-pc,1129706,9306954,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,fast-commit,1293408,9096155,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,aot,1410494,9117287,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,aot,1441599,9470871,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,fast-commit,1348092,9577563,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,fast-pc,1047984,8688396,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,fast,778507,8395194,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,fast-slots,852416,8357000,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,fast-address,882112,8377667,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,fast-loop,777434,8253372,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,python,524821,27483466,2584,,0 +fib,18,5,python,514244,26418359,2584,,0 +fib,18,5,fast-loop,771152,8362297,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,fast-address,960540,8589684,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,fast-slots,802100,9109919,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,fast,829926,8897811,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,fast-pc,1066747,8864527,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,fast-commit,1345527,9427562,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,aot,1495821,9409821,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,aot,1442950,9778767,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,fast-commit,1290492,9158392,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,fast-pc,1071446,8721415,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,fast,909191,8559861,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,fast-slots,765505,8427932,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,fast-address,903643,8589115,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,fast-loop,772178,8565908,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,python,513697,27260681,2584,,0 +fib,18,7,python,512300,26229308,2584,,0 +fib,18,7,fast-loop,807874,8450645,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,fast-address,865459,8351178,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,fast-slots,777346,8355401,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,fast,811433,8278291,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,fast-pc,1058203,8933684,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,fast-commit,1288734,9060652,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,aot,1451186,9485850,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,aot,1477128,9464194,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,fast-commit,1278334,8988906,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,fast-pc,1057309,8911811,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,fast,767798,8594119,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,fast-slots,777248,8378732,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,fast-address,892262,8342881,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,fast-loop,803218,8225023,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,python,510142,27074297,2584,,0 +nqueens,4,0,aot,21564,8137646,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,fast-commit,22119,7745959,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,fast-pc,17820,8018519,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,fast,17233,7830047,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,fast-slots,18898,8698131,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,fast-address,16742,8896384,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,fast-loop,17254,7923664,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,python,21170,26519794,2,,0 +nqueens,4,1,python,20154,26039999,2,,0 +nqueens,4,1,fast-loop,17087,8111924,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,fast-address,17519,7602432,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,fast-slots,18288,8192489,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,fast,18862,7740020,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,fast-pc,19102,7998947,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,fast-commit,22466,7825544,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,aot,20888,8338319,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,aot,20205,8025917,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,fast-commit,20748,8848236,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,fast-pc,18616,8047311,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,fast,17454,8120533,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,fast-slots,17038,8200602,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,fast-address,17697,7974402,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,fast-loop,17644,8066837,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,python,60322,26733408,2,,0 +nqueens,4,3,python,22159,25946265,2,,0 +nqueens,4,3,fast-loop,18056,8185459,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,fast-address,17240,8025347,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,fast-slots,18045,8918464,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,fast,17844,8259845,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,fast-pc,18187,7760382,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,fast-commit,23664,7891823,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,aot,21077,7973066,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,aot,20576,8068449,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,fast-commit,27604,7855568,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,fast-pc,18718,8018137,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,fast,18553,8783347,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,fast-slots,17693,8264504,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,fast-address,15991,8132683,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,fast-loop,17640,8374793,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,python,21686,27666768,2,,0 +nqueens,4,5,python,20298,25726896,2,,0 +nqueens,4,5,fast-loop,15699,8060858,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,fast-address,16632,7613778,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,fast-slots,17464,7673534,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,fast,17839,7740372,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,fast-pc,18274,7772404,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,fast-commit,20574,7551630,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,aot,21615,7684006,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,aot,20839,7856086,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,fast-commit,19500,8028750,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,fast-pc,17569,7692727,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,fast,17312,7748676,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,fast-slots,16892,8156338,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,fast-address,15853,8042659,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,fast-loop,16285,7793095,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,python,20581,26568381,2,,0 +nqueens,4,7,python,19565,25291360,2,,0 +nqueens,4,7,fast-loop,15867,8079062,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,fast-address,15713,7787312,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,fast-slots,17267,7685664,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,fast,16437,7518186,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,fast-pc,18480,7819315,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,fast-commit,20128,7836484,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,aot,20312,7698595,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,aot,19759,8103964,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,fast-commit,18919,7784886,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,fast-pc,16778,7616862,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,fast,15869,7614966,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,fast-slots,21451,7614949,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,fast-address,15812,7672083,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,fast-loop,15123,7586537,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,python,21282,26136798,2,,0 +nqueens,5,0,aot,45075,8252210,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,fast-commit,55204,7837710,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,fast-pc,36848,7738816,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,fast,35964,7599308,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,fast-slots,30614,7938335,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,fast-address,30146,7668150,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,fast-loop,32260,7787565,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,python,36155,26308491,10,,0 +nqueens,5,1,python,37055,25726622,10,,0 +nqueens,5,1,fast-loop,39637,7954606,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,fast-address,29866,7809300,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,fast-slots,33019,7747804,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,fast,33094,7842161,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,fast-pc,38500,7669339,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,fast-commit,42336,7783480,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,aot,45763,7825914,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,aot,44177,7731807,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,fast-commit,40175,8371635,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,fast-pc,38304,7709013,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,fast,33787,7647026,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,fast-slots,35972,7668428,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,fast-address,30297,7671057,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,fast-loop,30204,7643600,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,python,35216,26231738,10,,0 +nqueens,5,3,python,39145,25609196,10,,0 +nqueens,5,3,fast-loop,30476,8224785,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,fast-address,29694,8041427,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,fast-slots,33518,7807144,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,fast,33468,7833651,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,fast-pc,36168,7770178,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,fast-commit,43667,7710026,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,aot,45952,7924265,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,aot,58472,7963123,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,fast-commit,40478,7841000,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,fast-pc,42269,7649073,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,fast,32291,7737962,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,fast-slots,34871,7523161,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,fast-address,29716,8575379,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,fast-loop,30071,8184390,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,python,37066,26892736,10,,0 +nqueens,5,5,python,36389,26050625,10,,0 +nqueens,5,5,fast-loop,31591,7827466,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,fast-address,30659,7755864,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,fast-slots,33702,7882465,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,fast,32697,7742640,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,fast-pc,36763,7836603,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,fast-commit,40698,8589575,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,aot,44237,8291374,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,aot,44855,7946678,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,fast-commit,41962,8049755,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,fast-pc,37576,8000179,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,fast,32618,8068830,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,fast-slots,32968,7865201,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,fast-address,30679,7834650,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,fast-loop,31270,8414248,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,python,37232,26789122,10,,0 +nqueens,5,7,python,35898,25744708,10,,0 +nqueens,5,7,fast-loop,30065,8167425,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,fast-address,29747,7718619,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,fast-slots,34620,7622064,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,fast,31764,7955402,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,fast-pc,37465,7725122,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,fast-commit,42123,7745977,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,aot,45528,7905782,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,aot,43854,8201529,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,fast-commit,41275,7925117,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,fast-pc,36894,7695529,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,fast,47880,7825514,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,fast-slots,32885,8129056,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,fast-address,30729,7747418,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,fast-loop,29819,7741568,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,python,36982,26489440,10,,0 +nqueens,6,0,aot,115291,7771364,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,fast-commit,104565,7853797,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,fast-pc,96139,7711627,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,fast,76453,7644594,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,fast-slots,77364,7893683,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,fast-address,71031,8297890,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,fast-loop,70885,7738219,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,python,80034,26266702,4,,0 +nqueens,6,1,python,75472,25663705,4,,0 +nqueens,6,1,fast-loop,68670,8391402,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,fast-address,85302,7928392,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,fast-slots,81459,7900875,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,fast,80771,7670433,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,fast-pc,100442,8054413,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,fast-commit,106904,7933724,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,aot,118215,8107640,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,aot,116956,8240087,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,fast-commit,103167,8236078,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,fast-pc,92506,7898961,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,fast,83119,7850632,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,fast-slots,79657,7877222,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,fast-address,70286,7704698,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,fast-loop,71098,7744340,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,python,80587,26612477,4,,0 +nqueens,6,3,python,78917,25997882,4,,0 +nqueens,6,3,fast-loop,71160,8128825,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,fast-address,71979,7805926,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,fast-slots,86576,7729017,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,fast,73918,7695335,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,fast-pc,94632,7780097,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,fast-commit,105083,7775379,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,aot,115544,8188060,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,aot,114118,7710121,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,fast-commit,102144,7795333,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,fast-pc,89656,7776110,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,fast,89838,7766755,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,fast-slots,74558,7769828,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,fast-address,69910,7883583,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,fast-loop,70260,7784683,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,python,79543,26539343,4,,0 +nqueens,6,5,python,84737,25846784,4,,0 +nqueens,6,5,fast-loop,69210,8323174,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,fast-address,77303,7815204,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,fast-slots,73534,7612785,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,fast,75309,7605153,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,fast-pc,91856,7793240,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,fast-commit,113277,7931832,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,aot,114422,8160657,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,aot,121962,7985668,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,fast-commit,103963,8080066,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,fast-pc,97540,7676380,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,fast,75385,7920060,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,fast-slots,76425,7810447,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,fast-address,71389,7922275,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,fast-loop,72102,7882181,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,python,78833,26611814,4,,0 +nqueens,6,7,python,78266,26039688,4,,0 +nqueens,6,7,fast-loop,69512,8328861,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,fast-address,70829,7802284,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,fast-slots,76062,7648203,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,fast,76601,7519204,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,fast-pc,93842,7542121,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,fast-commit,107611,7922762,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,aot,117249,8011900,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,aot,117550,8275194,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,fast-commit,108287,7841103,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,fast-pc,97371,7961018,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,fast,78421,7709458,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,fast-slots,80718,7915277,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,fast-address,70874,7752303,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,fast-loop,74391,7826575,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,python,78516,25944350,4,,0 +nqueens,8,0,aot,1513110,8811341,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,fast-commit,1317635,8950530,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,fast-pc,1199780,8857432,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,fast,963143,8570237,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,fast-slots,1026232,8791951,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,fast-address,829078,8417063,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,fast-loop,839050,8607841,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,python,788517,27043191,92,,0 +nqueens,8,1,python,794727,26399731,92,,0 +nqueens,8,1,fast-loop,868338,9086716,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,fast-address,847432,8608963,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,fast-slots,957617,8799405,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,fast,934553,8701407,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,fast-pc,1150653,8971438,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,fast-commit,1308514,8969515,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,aot,1556451,9230901,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,aot,1526173,9369523,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,fast-commit,1327229,9005055,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,fast-pc,1148874,8838629,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,fast,957305,8541439,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,fast-slots,1014615,8697893,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,fast-address,845253,8608250,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,fast-loop,826587,8394863,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,python,814588,27274365,92,,0 +nqueens,8,3,python,808832,26542858,92,,0 +nqueens,8,3,fast-loop,838928,8763933,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,fast-address,841112,8553533,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,fast-slots,950232,8336916,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,fast,958144,8458428,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,fast-pc,1139078,9329347,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,fast-commit,1306731,9028206,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,aot,1497548,9248874,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,aot,1504152,9484474,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,fast-commit,1310533,9342990,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,fast-pc,1195532,9116251,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,fast,917969,8647885,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,fast-slots,1031131,9001388,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,fast-address,863415,9074182,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,fast-loop,846494,8893676,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,python,782748,27287648,92,,0 +nqueens,8,5,python,796483,26324962,92,,0 +nqueens,8,5,fast-loop,959840,9142688,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,fast-address,852577,8488433,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,fast-slots,1056378,8862759,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,fast,957467,8519473,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,fast-pc,1142506,8685991,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,fast-commit,1308459,9161539,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,aot,1554927,9357860,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,aot,1495363,9695812,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,fast-commit,1306909,9604861,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,fast-pc,1160953,8722115,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,fast,923336,8533094,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,fast-slots,889217,8291956,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,fast-address,858789,8863336,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,fast-loop,835492,8648470,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,python,835444,27468100,92,,0 +nqueens,8,7,python,806565,27153551,92,,0 +nqueens,8,7,fast-loop,836255,9328023,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,fast-address,853784,9121217,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,fast-slots,1007802,9044214,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,fast,991727,9303774,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,fast-pc,1137368,9420184,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,fast-commit,1321888,9117301,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,aot,1506605,9908713,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,aot,1503351,9422007,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,fast-commit,1304706,9214724,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,fast-pc,1192865,8990230,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,fast,965448,8653581,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,fast-slots,922278,8785168,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,fast-address,847675,8402241,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,fast-loop,861873,8491453,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,python,808379,27136678,92,,0 diff --git a/bench/native/results/fast/validation.json b/bench/native/results/fast/validation.json new file mode 100644 index 00000000..b231b41c --- /dev/null +++ b/bench/native/results/fast/validation.json @@ -0,0 +1,57 @@ +{ + "suites": { + "aot": { + "checks": 149, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "fast-commit": { + "checks": 149, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "fast-pc": { + "checks": 149, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "fast": { + "checks": 149, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "fast-slots": { + "checks": 149, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "fast-address": { + "checks": 149, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "fast-loop": { + "checks": 149, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + } + }, + "cross_method_restarts": 49, + "live_edit_groups": 7, + "prepared_call_replays": 7, + "address_cache_groups": 3 +} diff --git a/bench/native/results/key-cache/independent-orphan-lock.json b/bench/native/results/key-cache/independent-orphan-lock.json new file mode 100644 index 00000000..6517caee --- /dev/null +++ b/bench/native/results/key-cache/independent-orphan-lock.json @@ -0,0 +1,28 @@ +{ + "cpu": 25, + "lock_offset": 112, + "attempts": [ + { + "attempt": 1, + "killed_exit": -9, + "pool_lock_after_death": 0 + }, + { + "attempt": 2, + "killed_exit": -9, + "pool_lock_after_death": 0 + }, + { + "attempt": 3, + "killed_exit": -9, + "pool_lock_after_death": 1, + "one_instruction_restart": "blocked > 0.5s", + "backtrace_exit": 0, + "backtrace_contains_sbo_lock": true, + "backtrace_contains_sbo_allocated_size": true, + "backtrace_contains_read_tlv": true, + "pool_lock_after_restart": 1 + } + ], + "reproduced": true +} diff --git a/bench/native/results/key-cache/independent-validation.json b/bench/native/results/key-cache/independent-validation.json new file mode 100644 index 00000000..c788976e --- /dev/null +++ b/bench/native/results/key-cache/independent-validation.json @@ -0,0 +1,9 @@ +{ + "worker_invocations": 97, + "cpu": 25, + "outputs_and_exact_final_state": "3 cases x 3 modes passed", + "cross_mode_restart_pairs": 9, + "live_argument_constant_and_pc_checks": "all 3 modes passed", + "prepared_partial_redo_replay": "all 3 modes passed", + "kvspaceGet_and_WriteInPlace_body_addresses": "all 5 keys identical" +} diff --git a/bench/native/results/key-cache/medians-us.json b/bench/native/results/key-cache/medians-us.json new file mode 100644 index 00000000..599a1bf9 --- /dev/null +++ b/bench/native/results/key-cache/medians-us.json @@ -0,0 +1,242 @@ +{ + "iops(500)": { + "medians_us": { + "lookup-all": 1762.874, + "lookup-pc": 446.729, + "cached": 51.692, + "python": 25.869 + }, + "paired_speedups": { + "lookup-all": { + "median": 35.0801477984988, + "minimum": 29.621743230054093, + "maximum": 38.05278331743692 + }, + "lookup-pc": { + "median": 8.531108462455304, + "minimum": 7.731948189442689, + "maximum": 9.761011878956039 + } + } + }, + "iops(1000)": { + "medians_us": { + "lookup-all": 3584.655, + "lookup-pc": 887.8, + "cached": 98.441, + "python": 49.078 + }, + "paired_speedups": { + "lookup-all": { + "median": 36.42991868935707, + "minimum": 20.918294900790414, + "maximum": 41.971934056155305 + }, + "lookup-pc": { + "median": 9.001581879918186, + "minimum": 5.211138054046492, + "maximum": 10.444582347844413 + } + } + }, + "iops(2000)": { + "medians_us": { + "lookup-all": 7043.003, + "lookup-pc": 1757.887, + "cached": 194.247, + "python": 95.043 + }, + "paired_speedups": { + "lookup-all": { + "median": 36.658921899088085, + "minimum": 34.15667653428169, + "maximum": 38.69584570547265 + }, + "lookup-pc": { + "median": 9.049751090106925, + "minimum": 8.307531837959191, + "maximum": 9.718595805638952 + } + } + }, + "iops(200000)": { + "medians_us": { + "lookup-all": 626759.425, + "lookup-pc": 156723.349, + "cached": 17939.414, + "python": 8896.198 + }, + "paired_speedups": { + "lookup-all": { + "median": 35.35096403990036, + "minimum": 33.852642643659884, + "maximum": 36.52896405426693 + }, + "lookup-pc": { + "median": 8.820349557181089, + "minimum": 8.589877403066618, + "maximum": 9.30531339844363 + } + } + }, + "fib(8)": { + "medians_us": { + "lookup-all": 353.337, + "lookup-pc": 98.437, + "cached": 17.115, + "python": 9.936 + }, + "paired_speedups": { + "lookup-all": { + "median": 20.687297567869972, + "minimum": 16.500298425233, + "maximum": 21.7339291033661 + }, + "lookup-pc": { + "median": 5.687525562372188, + "minimum": 4.519305816996464, + "maximum": 5.944408456510217 + } + } + }, + "fib(9)": { + "medians_us": { + "lookup-all": 577.859, + "lookup-pc": 158.609, + "cached": 25.009, + "python": 14.605 + }, + "paired_speedups": { + "lookup-all": { + "median": 23.335279299452196, + "minimum": 19.72241155183923, + "maximum": 27.544165757906217 + }, + "lookup-pc": { + "median": 6.349274261265944, + "minimum": 5.386701009964075, + "maximum": 6.8486981303165075 + } + } + }, + "fib(10)": { + "medians_us": { + "lookup-all": 925.635, + "lookup-pc": 251.366, + "cached": 35.961, + "python": 19.246 + }, + "paired_speedups": { + "lookup-all": { + "median": 25.744307038570494, + "minimum": 25.07375094830389, + "maximum": 27.479686326854093 + }, + "lookup-pc": { + "median": 7.004504880286977, + "minimum": 6.574374119432101, + "maximum": 7.175735084213532 + } + } + }, + "fib(18)": { + "medians_us": { + "lookup-all": 40668.795, + "lookup-pc": 11343.391, + "cached": 1439.064, + "python": 524.684 + }, + "paired_speedups": { + "lookup-all": { + "median": 28.083120073914586, + "minimum": 26.097461543313653, + "maximum": 29.373803705859974 + }, + "lookup-pc": { + "median": 7.922959318174072, + "minimum": 7.7681423137363526, + "maximum": 8.87077515022532 + } + } + }, + "nqueens(4)": { + "medians_us": { + "lookup-all": 289.481, + "lookup-pc": 84.534, + "cached": 20.238, + "python": 19.769 + }, + "paired_speedups": { + "lookup-all": { + "median": 14.434249684741488, + "minimum": 13.174447174447174, + "maximum": 15.080717252984172 + }, + "lookup-pc": { + "median": 4.195925944508555, + "minimum": 3.8838255064670157, + "maximum": 4.452805384655834 + } + } + }, + "nqueens(5)": { + "medians_us": { + "lookup-all": 893.383, + "lookup-pc": 249.466, + "cached": 45.91, + "python": 36.404 + }, + "paired_speedups": { + "lookup-all": { + "median": 19.601661757594407, + "minimum": 17.650114969869964, + "maximum": 21.367963141061484 + }, + "lookup-pc": { + "median": 5.426910406304502, + "minimum": 4.912821122740247, + "maximum": 5.799132204602894 + } + } + }, + "nqueens(6)": { + "medians_us": { + "lookup-all": 2660.631, + "lookup-pc": 729.688, + "cached": 118.0, + "python": 77.599 + }, + "paired_speedups": { + "lookup-all": { + "median": 22.261330508474575, + "minimum": 21.703427021696253, + "maximum": 23.645539049604725 + }, + "lookup-pc": { + "median": 6.314255551132725, + "minimum": 5.918737055870289, + "maximum": 6.903260576663972 + } + } + }, + "nqueens(8)": { + "medians_us": { + "lookup-all": 32712.011, + "lookup-pc": 9551.643, + "cached": 1507.4, + "python": 795.46 + }, + "paired_speedups": { + "lookup-all": { + "median": 21.686073769220265, + "minimum": 20.462694042722568, + "maximum": 26.34803080882338 + }, + "lookup-pc": { + "median": 6.360004852716679, + "minimum": 6.2082316707072085, + "maximum": 7.221969274094856 + } + } + } +} diff --git a/bench/native/results/key-cache/metadata.json b/bench/native/results/key-cache/metadata.json new file mode 100644 index 00000000..4f6d34b1 --- /dev/null +++ b/bench/native/results/key-cache/metadata.json @@ -0,0 +1,81 @@ +{ + "cpu": 24, + "cpu_model": "Intel(R) Xeon(R) Gold 6418H", + "python": "3.10.12", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0", + "pairs": 9, + "inputs": { + "iops": { + "scales": [ + 500, + 1000, + 2000, + 200000 + ], + "kv_sha256": "360d3a2b7bd4d014255ba34cd86f6c72ee72a46b4787ed248ee5a6db96887dd7", + "python_sha256": "e53ef1d628cf1b39be8e2ee2e7ee04a9e0517403226e5f8f18ada9a44ce12d04", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\niops(n) -> r\n}\n", + "generated_c_sha256": "ef929eb7f7dea1fe901fcbac9fa5fc18af13919e96c57d129744caf3dd0e781b", + "workers": { + "cached": "9a3fe6451d94d3cc2f8cb4e3c135c89d49efa41c7b9f9496bc9fc7aeec3a1360", + "lookup-pc": "06c0dd2242b5489f7c48b261c855c76596a1939d0cde8af1e0766c9200c1696d", + "lookup-all": "3f10d7fd8e04b3f0136ccb85361c83bb59f10526a1d8ac5536711f80fcfe77e6" + } + }, + "fib": { + "scales": [ + 8, + 9, + 10, + 18 + ], + "kv_sha256": "f9f308e2939ecd712442586ee87b8340f55331e75bcd6a6c6ffc12aea3a7bab4", + "python_sha256": "63a329cd3bbc9271f9142f9fa762b3389c17525679763a14e21a7138e12987fa", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\nfib(n) -> r\n}\n", + "generated_c_sha256": "07b55ab8792de8104e5df323ebae83bbb64e6ce22c75c4d6fe9ca374146ccf95", + "workers": { + "cached": "1fbf2a34bc09aaab00fedb9746d502e9be8a12bc87f4e5119e41018fd7ada24a", + "lookup-pc": "c0064d3b23d6a4a40e1ff205773e8a99dc56f8cc770cb5480e6901f5f399a827", + "lookup-all": "610deff892a017a908a70eb19838f1e73f5f6d61e12ec695090debc63a9b54ea" + } + }, + "nqueens": { + "scales": [ + 4, + 5, + 6, + 8 + ], + "kv_sha256": "e4ba6073d1cd9e76949e3b81b46604e28b97e712afd6f6158db811f7e97c169b", + "python_sha256": "61ebaeccf79bf06a85e213180930552748cca126ec60b8636a7ed7849765a8af", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\n1 << n -> sh\nsh - 1 -> all\nnq(0, 0, 0, all) -> r\n}\n", + "generated_c_sha256": "0d3c595d6ba9f9df24fe1e13c52c551859609ae64ce3e7acd64d272848e421e0", + "workers": { + "cached": "ff84d32d14ee89a49a0928f21f3029a1599e3b03dc4a2cb436e9dc3dd15e3118", + "lookup-pc": "48dd7290df27a7d50ce6585a0be7f8252b3f452702ba38684ed6bf6905696d32", + "lookup-all": "b182481e119e9cfe92dc9fe1ff47acd2b61383fc1f702a6fea4b6606e30b9552" + } + } + }, + "warmups": 1, + "timing": "execute only, including redo; excludes init/attach/schema/report; wall includes init and run", + "conditions": "Linux x86-64 SHM, fixed value shapes, exclusive worker; each instruction reads live KV values", + "lookup_all": "one kvspaceGet per PC/status/frames/constants/journal key per instruction", + "lookup_pc": "one kvspaceGet for PC per instruction; other addresses cached", + "cached": "all five body addresses attached once per process; no KV value cache", + "libraries": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "kvlang": { + "path": "/tmp/kvlang-perf-current/bin/kvlang", + "sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a" + }, + "loaded": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "samples": 432, + "output_checks": 432, + "equal_final_state_groups": 108 +} diff --git a/bench/native/results/key-cache/orphan-lock-backtrace.txt b/bench/native/results/key-cache/orphan-lock-backtrace.txt new file mode 100644 index 00000000..492e5391 --- /dev/null +++ b/bench/native/results/key-cache/orphan-lock-backtrace.txt @@ -0,0 +1,14 @@ +[Thread debugging using libthread_db enabled] +Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". +0x000072b41a6c1ce2 in sbo_lock (lk=) at /tmp/slotsboxmalloc-perf-leaf/include/slotsboxmalloc/slotsboxobj.h:88 +88 while (!atomic_compare_exchange_weak(&lk->lock, &e, 1)) { + +Thread 1 (Thread 0x72b41a6ac740 (LWP 1265728) "iops"): +#0 0x000072b41a6c1ce2 in sbo_lock (lk=) at /tmp/slotsboxmalloc-perf-leaf/include/slotsboxmalloc/slotsboxobj.h:88 +#1 sbo_allocated_size (metaptr=0x72341a400000, obj_offset=104) at /tmp/slotsboxmalloc-perf-leaf/include/slotsboxmalloc/slotsboxobj.h:558 +#2 0x000072b41a6c3cc1 in read_tlv (kv=0x5a3f1125b350, off=, out=0x7ffe2c675cc8, ol=0x7ffe2c675cbc) at /tmp/kvspace-c-perf-write/src/kvspace.c:1232 +#3 kvspaceShmGet (kv=0x5a3f1125b350, key=, resolve=, ol=ol@entry=0x7ffe2c676584) at /tmp/kvspace-c-perf-write/src/kvspace.c:1378 +#4 0x000072b41a6c6a90 in kvspaceGet (h=, key=, resolve=, out=0x7ffe2c6765c0, out_len=0x7ffe2c6765bc) at /tmp/kvspace-c-perf-write/src/durable_abi.c:80 +#5 0x00005a3f0e608415 in body () +#6 0x00005a3f0e6075a3 in main () +[Inferior 1 (process 1265728) detached] diff --git a/bench/native/results/key-cache/samples.csv b/bench/native/results/key-cache/samples.csv new file mode 100644 index 00000000..1add5eff --- /dev/null +++ b/bench/native/results/key-cache/samples.csv @@ -0,0 +1,433 @@ +case,scale,pair,variant,kernel_ns,wall_ns,result,state_sha256 +iops,500,0,lookup-all,1748212,9823359,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,0,lookup-pc,436503,8884279,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,0,cached,51532,7904335,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,0,python,25661,26130792,500, +iops,500,1,python,25314,26093768,500, +iops,500,1,cached,52009,8448192,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,1,lookup-pc,433458,8935463,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,1,lookup-all,1751789,9778197,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,2,lookup-all,1792885,10106376,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,2,lookup-pc,429456,8406043,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,2,cached,50340,8471712,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,2,python,25847,26363244,500, +iops,500,3,python,25429,25786061,500, +iops,500,3,cached,46132,8312477,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,3,lookup-pc,450295,8432449,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,3,lookup-all,1755451,9844590,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,4,lookup-all,1819578,9902398,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,4,lookup-pc,437168,8812791,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,4,cached,51811,8125667,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,4,python,26263,26255006,500, +iops,500,5,python,26183,25666887,500, +iops,500,5,cached,51692,8208331,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,5,lookup-pc,446729,8964397,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,5,lookup-all,1813363,10389813,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,6,lookup-all,1759458,9699108,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,6,lookup-pc,448563,8674337,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,6,cached,52202,8041580,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,6,python,26145,26210438,500, +iops,500,7,python,25932,25647221,500, +iops,500,7,cached,60451,8480736,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,7,lookup-pc,467404,8411386,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,7,lookup-all,1790664,9914475,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,8,lookup-all,1762874,9824903,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,8,lookup-pc,453753,8683657,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,8,cached,50152,8171318,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7 +iops,500,8,python,25869,26869767,500, +iops,1000,0,lookup-all,3541470,11419189,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,0,lookup-pc,878055,9102428,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,0,cached,98441,8041402,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,0,python,51643,26005417,1000, +iops,1000,1,python,48624,25377191,1000, +iops,1000,1,cached,171556,8686615,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,1,lookup-pc,894002,9171431,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,1,lookup-all,3588659,11835772,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,2,lookup-all,3588364,11942235,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,2,lookup-pc,871678,9342179,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,2,cached,93793,8146226,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,2,python,47508,25773331,1000, +iops,1000,3,python,41698,25050834,1000, +iops,1000,3,cached,91437,7883873,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,3,lookup-pc,873043,8643269,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,3,lookup-all,3627098,11760591,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,4,lookup-all,3498932,11663736,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,4,lookup-pc,887800,8721486,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,4,cached,101917,8315001,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,4,python,49165,26432960,1000, +iops,1000,5,python,51577,25825282,1000, +iops,1000,5,cached,99249,8865215,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,5,lookup-pc,893398,8921947,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,5,lookup-all,3615633,11695834,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,6,lookup-all,3575807,11947352,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,6,lookup-pc,924763,8896557,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,6,cached,97556,8302684,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,6,python,49187,26981058,1000, +iops,1000,7,python,48476,25255604,1000, +iops,1000,7,cached,85406,7999667,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,7,lookup-pc,892030,8729442,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,7,lookup-all,3584655,12045185,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,8,lookup-all,3568782,11747720,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,8,lookup-pc,877251,9195309,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,8,cached,101067,8171802,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58 +iops,1000,8,python,49078,26413363,1000, +iops,2000,0,lookup-all,7014868,15169462,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,0,lookup-pc,1756193,9398552,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,0,cached,191355,8127936,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,0,python,93993,26008075,2000, +iops,2000,1,python,96670,25509969,2000, +iops,2000,1,cached,186709,8611189,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,1,lookup-pc,1792854,9635138,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,1,lookup-all,6929659,14983578,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,2,lookup-all,7330653,15681916,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,2,lookup-pc,1775222,9886525,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,2,cached,197933,8264216,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,2,python,95043,26519999,2000, +iops,2000,3,python,97518,25572264,2000, +iops,2000,3,cached,182197,8280810,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,3,lookup-pc,1770699,10298839,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,3,lookup-all,7050267,15218795,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,4,lookup-all,6876832,15086529,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,4,lookup-pc,1672572,9739642,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,4,cached,201332,8224120,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,4,python,99592,26521547,2000, +iops,2000,5,python,94422,26335394,2000, +iops,2000,5,cached,189449,8619120,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,5,lookup-pc,1719267,10170064,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,5,lookup-all,7048936,15351220,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,6,lookup-all,7024242,15102231,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,6,lookup-pc,1757887,9471353,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,6,cached,194247,8419486,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,6,python,94719,26532612,2000, +iops,2000,7,python,94776,25820971,2000, +iops,2000,7,cached,195992,8159705,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,7,lookup-pc,1760701,9824236,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,7,lookup-all,7090155,15219701,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,8,lookup-all,7043003,15391219,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,8,lookup-pc,1630914,9754146,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,8,cached,194896,8377402,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2 +iops,2000,8,python,101293,26955480,2000, +iops,200000,0,lookup-all,636037135,644243457,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,0,lookup-pc,153578674,162545973,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,0,cached,17411858,26682471,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,0,python,8761746,34476105,200000, +iops,200000,1,python,9147903,34884243,200000, +iops,200000,1,cached,18139040,26269040,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,1,lookup-pc,156723349,165278378,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,1,lookup-all,645865807,654234081,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,2,lookup-all,609812994,619342614,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,2,lookup-pc,158978981,169234982,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,2,cached,17084753,25715290,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,2,python,8903110,35413958,200000, +iops,200000,3,python,8271954,33014838,200000, +iops,200000,3,cached,17792989,25809961,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,3,lookup-pc,154127127,162114892,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,3,lookup-all,603699380,612065718,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,4,lookup-all,613665869,622882066,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,4,lookup-pc,155251884,164475357,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,4,cached,17359240,25826768,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,4,python,8579909,34146505,200000, +iops,200000,5,python,8896198,33987558,200000, +iops,200000,5,cached,18125902,26142090,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,5,lookup-pc,155699276,164289275,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,5,lookup-all,613609683,622939567,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,6,lookup-all,631809054,641432444,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,6,lookup-pc,157248810,166824361,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,6,cached,18206086,27088221,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,6,python,8989873,35546383,200000, +iops,200000,7,python,9368484,35495171,200000, +iops,200000,7,cached,18091584,26726079,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,7,lookup-pc,160307537,168450321,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,7,lookup-all,642684437,651367548,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,8,lookup-all,626759425,636425853,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,8,lookup-pc,158849531,168149079,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,8,cached,17939414,26979297,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b +iops,200000,8,python,8673016,34740789,200000, +fib,8,0,lookup-all,351291,8790741,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,0,lookup-pc,100942,8217369,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,0,cached,16981,8190188,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,0,python,10464,26597905,21, +fib,8,1,python,9534,25412926,21, +fib,8,1,cached,16957,8531500,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,1,lookup-pc,99284,7993279,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,1,lookup-all,353337,8638206,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,2,lookup-all,350506,8501251,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,2,lookup-pc,98224,8653740,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,2,cached,17370,8322747,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,2,python,9936,26254623,21, +fib,8,3,python,9464,26493860,21, +fib,8,3,cached,18072,8382720,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,3,lookup-pc,100670,8601860,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,3,lookup-all,352043,8806891,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,4,lookup-all,357670,8934494,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,4,lookup-pc,98961,8483487,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,4,cached,17194,8512945,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,4,python,10027,27282269,21, +fib,8,5,python,9870,25709091,21, +fib,8,5,cached,21781,8161896,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,5,lookup-pc,98435,8634335,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,5,lookup-all,359393,8131845,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,6,lookup-all,355674,8542743,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,6,lookup-pc,97342,8644162,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,6,cached,17115,7853431,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,6,python,10069,26198342,21, +fib,8,7,python,10001,25714136,21, +fib,8,7,cached,16995,8033122,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,7,lookup-pc,96050,8111019,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,7,lookup-all,351090,8509577,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,8,lookup-all,364804,8385157,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,8,lookup-pc,98437,8505526,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,8,cached,16785,8190352,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a +fib,8,8,python,9473,26504266,21, +fib,9,0,lookup-all,581159,8509318,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,0,lookup-pc,157052,8142119,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,0,cached,25493,8106733,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,0,python,15438,26351741,34, +fib,9,1,python,14419,25757279,34, +fib,9,1,cached,23159,8198004,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,1,lookup-pc,158609,8291369,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,1,lookup-all,573613,8761221,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,2,lookup-all,573779,8690588,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,2,lookup-pc,151769,8372951,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,2,cached,25243,8530017,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,2,python,14456,26500956,34, +fib,9,3,python,15032,25951069,34, +fib,9,3,cached,22925,7969410,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,3,lookup-pc,154031,8194985,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,3,lookup-all,631450,8446330,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,4,lookup-all,583592,8843736,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,4,lookup-pc,158789,8655606,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,4,cached,25009,8308209,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,4,python,14605,26320955,34, +fib,9,5,python,14247,25765731,34, +fib,9,5,cached,29506,8395884,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,5,lookup-pc,158940,7979833,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,5,lookup-all,582945,8831238,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,6,lookup-all,577859,8843972,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,6,lookup-pc,160226,8396632,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,6,cached,24430,8035301,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,6,python,15344,26505625,34, +fib,9,7,python,14906,25673734,34, +fib,9,7,cached,23681,8058572,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,7,lookup-pc,157729,7874482,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,7,lookup-all,575736,8865496,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,8,lookup-all,561359,8782346,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,8,lookup-pc,161745,8436159,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,8,cached,28463,8661074,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455 +fib,9,8,python,14339,26952828,34, +fib,10,0,lookup-all,943368,9520183,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,0,lookup-pc,254605,8699371,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,0,cached,35499,8145900,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,0,python,18538,25825506,55, +fib,10,1,python,19380,25545153,55, +fib,10,1,cached,35804,8315206,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,1,lookup-pc,253474,8100806,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,1,lookup-all,917325,8877117,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,2,lookup-all,942324,8601676,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,2,lookup-pc,247179,8477385,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,2,cached,37288,7972605,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,2,python,18889,26097932,55, +fib,10,3,python,19495,25833059,55, +fib,10,3,cached,35030,8459856,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,3,lookup-pc,251366,8422069,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,3,lookup-all,925635,9002110,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,4,lookup-all,925109,8860854,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,4,lookup-pc,251368,8538988,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,4,cached,36334,8199962,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,4,python,19389,26368943,55, +fib,10,5,python,18829,25610764,55, +fib,10,5,cached,36908,7828634,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,5,lookup-pc,242647,8122612,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,5,lookup-all,925422,8847276,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,6,lookup-all,945125,9049731,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,6,lookup-pc,248589,8201216,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,6,cached,36712,8122015,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,6,python,19246,26218860,55, +fib,10,7,python,19140,25910956,55, +fib,10,7,cached,35961,7995155,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,7,lookup-pc,251889,8451933,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,7,lookup-all,988197,8886001,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,8,lookup-all,925218,9295536,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,8,lookup-pc,250622,8708145,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,8,cached,35543,8309542,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409 +fib,10,8,python,19621,26401205,55, +fib,18,0,lookup-all,41148305,49568853,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,0,lookup-pc,11156845,19082808,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,0,cached,1429719,9508931,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,0,python,518208,26899009,2584, +fib,18,1,python,525236,26360744,2584, +fib,18,1,cached,1437669,9641011,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,1,lookup-pc,11390593,19083947,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,1,lookup-all,42229807,50182956,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,2,lookup-all,41442914,49704797,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,2,lookup-pc,11336878,19642080,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,2,cached,1422440,9512476,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,2,python,534227,27079294,2584, +fib,18,3,python,524684,26195219,2584, +fib,18,3,cached,1448576,9310321,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,3,lookup-pc,11321853,19278968,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,3,lookup-all,41561621,49655292,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,4,lookup-all,38063774,46582134,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,4,lookup-pc,11330022,19347296,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,4,cached,1458524,9825939,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,4,python,516683,27199731,2584, +fib,18,5,python,519957,26141766,2584, +fib,18,5,cached,1448158,9424605,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,5,lookup-pc,12846284,20776776,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,5,lookup-all,40668795,48688699,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,6,lookup-all,39223897,47600914,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,6,lookup-pc,11343391,19637295,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,6,cached,1423166,10025070,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,6,python,532751,26935000,2584, +fib,18,7,python,511490,26072062,2584, +fib,18,7,cached,1439064,9504501,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,7,lookup-pc,11672561,19870900,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,7,lookup-all,37758206,45950217,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,8,lookup-all,39045978,47277797,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,8,lookup-pc,11424631,19375884,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,8,cached,1444215,9718051,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd +fib,18,8,python,535869,27148766,2584, +nqueens,4,0,lookup-all,294450,8405297,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,0,lookup-pc,89402,8082671,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,0,cached,20600,8166976,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,0,python,21035,26267948,2, +nqueens,4,1,python,20229,25439369,2, +nqueens,4,1,cached,20304,8305703,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,1,lookup-pc,85064,8342697,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,1,lookup-all,299842,8759474,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,2,lookup-all,286790,9657609,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,2,lookup-pc,84679,8424357,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,2,cached,19017,8366463,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,2,python,20325,26268984,2, +nqueens,4,3,python,18946,25810619,2, +nqueens,4,3,cached,21571,8608001,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,3,lookup-pc,83778,8258194,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,3,lookup-all,284186,8626749,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,4,lookup-all,285041,8750876,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,4,lookup-pc,84413,8252710,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,4,cached,20295,8370488,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,4,python,19769,26488690,2, +nqueens,4,5,python,20495,25312105,2, +nqueens,4,5,cached,19931,8232545,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,5,lookup-pc,83629,8080238,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,5,lookup-all,291054,8371498,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,6,lookup-all,289481,8650603,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,6,lookup-pc,85588,8114853,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,6,cached,20222,8174732,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,6,python,19751,26256132,2, +nqueens,4,7,python,19733,25710725,2, +nqueens,4,7,cached,19825,8407771,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,7,lookup-pc,84534,8400655,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,7,lookup-all,286159,8239654,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,8,lookup-all,292747,8638725,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,8,lookup-pc,84098,8055263,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,8,cached,20238,8163508,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309 +nqueens,4,8,python,19418,26246768,2, +nqueens,5,0,lookup-all,903787,8954871,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,0,lookup-pc,245358,8228105,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,0,cached,44066,8001279,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,0,python,36404,26149577,10, +nqueens,5,1,python,35065,25869874,10, +nqueens,5,1,cached,45228,8610173,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,1,lookup-pc,257307,8259735,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,1,lookup-all,896171,9024897,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,2,lookup-all,859589,9272231,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,2,lookup-pc,248458,8558116,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,2,cached,45910,8137720,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,2,python,38249,26700610,10, +nqueens,5,3,python,36725,25633150,10, +nqueens,5,3,cached,46079,8103302,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,3,lookup-pc,249466,8364255,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,3,lookup-all,886568,8860541,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,4,lookup-all,891758,8953014,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,4,lookup-pc,258927,8415172,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,4,cached,45494,8004103,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,4,python,37653,26426629,10, +nqueens,5,5,python,36038,25710077,10, +nqueens,5,5,cached,46443,8414172,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,5,lookup-pc,252042,8802818,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,5,lookup-all,911927,9464315,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,6,lookup-all,955383,9707850,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,6,lookup-pc,259285,8691541,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,6,cached,44711,8993273,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,6,python,35624,26999647,10, +nqueens,5,7,python,33660,26201322,10, +nqueens,5,7,cached,50448,8170198,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,7,lookup-pc,247842,8559770,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,7,lookup-all,890413,9801722,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,8,lookup-all,893383,9743759,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,8,lookup-pc,248692,8906623,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,8,cached,46205,8560992,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a +nqueens,5,8,python,37323,27596792,10, +nqueens,6,0,lookup-all,2612211,10770786,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,0,lookup-pc,717293,9122402,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,0,cached,118487,8558877,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,0,python,79148,26325167,4, +nqueens,6,1,python,79045,26009058,4, +nqueens,6,1,cached,118000,8090437,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,1,lookup-pc,720138,8757552,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,1,lookup-all,2626837,10676303,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,2,lookup-all,2640873,10778892,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,2,lookup-pc,779842,8907500,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,2,cached,121680,8162923,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,2,python,78677,26752451,4, +nqueens,6,3,python,72442,25705043,4, +nqueens,6,3,cached,115562,8002392,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,3,lookup-pc,729688,8584643,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,3,lookup-all,2638768,10726900,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,4,lookup-all,2698859,11456989,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,4,lookup-pc,734462,8658286,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,4,cached,124091,7846876,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,4,python,78096,26425826,4, +nqueens,6,5,python,76745,25738997,4, +nqueens,6,5,cached,115110,8440639,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,5,lookup-pc,737915,8814885,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,5,lookup-all,2721838,11006718,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,6,lookup-all,2660631,10985375,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,6,lookup-pc,794158,8851358,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,6,cached,115041,7689361,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,6,python,73990,26540289,4, +nqueens,6,7,python,76615,25447288,4, +nqueens,6,7,cached,122117,7728371,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,7,lookup-pc,727107,8495117,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,7,lookup-all,2715528,10412953,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,8,lookup-all,2687194,10866648,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,8,lookup-pc,727934,9077414,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,8,cached,115046,8145914,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427 +nqueens,6,8,python,77599,25902934,4, +nqueens,8,0,lookup-all,31817341,39469174,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,0,lookup-pc,9436371,17685485,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,0,cached,1483705,9703150,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,0,python,785288,26997001,92, +nqueens,8,1,python,804041,26798043,92, +nqueens,8,1,cached,1483462,10246987,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,1,lookup-pc,9551643,17732125,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,1,lookup-all,33039781,41119510,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,2,lookup-all,32712011,41457662,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,2,lookup-pc,10893864,19499333,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,2,cached,1508434,10953343,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,2,python,802494,28600806,92, +nqueens,8,3,python,801012,27338611,92, +nqueens,8,3,cached,1471137,10180896,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,3,lookup-pc,10011601,18215691,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,3,lookup-all,38761563,47706823,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,4,lookup-all,34406723,42622093,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,4,lookup-pc,9564619,18078576,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,4,cached,1540635,10269802,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,4,python,785263,27630979,92, +nqueens,8,5,python,793492,26853868,92, +nqueens,8,5,cached,1495966,9898017,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,5,lookup-pc,9354559,17874201,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,5,lookup-all,32004439,40032576,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,6,lookup-all,33918668,42508205,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,6,lookup-pc,9772533,18490788,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,6,cached,1534435,9921100,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,6,python,799989,27332817,92, +nqueens,8,7,python,795460,26354730,92, +nqueens,8,7,cached,1507400,10098645,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,7,lookup-pc,9366310,17592546,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,7,lookup-all,30845465,40108873,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,8,lookup-all,32506118,41373019,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,8,lookup-pc,9469859,17715204,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,8,cached,1508018,10387914,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8 +nqueens,8,8,python,793610,27473347,92, diff --git a/bench/native/results/key-cache/validation.json b/bench/native/results/key-cache/validation.json new file mode 100644 index 00000000..5b46e39d --- /dev/null +++ b/bench/native/results/key-cache/validation.json @@ -0,0 +1,32 @@ +{ + "cached": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "lookup-pc": { + "checks": 123, + "boundary_restarts": 32, + "sigkill_restarts": 0, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed", + "sigkill_scope": "skipped: lookup-PC Get left a shared allocator spinlock held after SIGKILL; these lookup ablations are not claimed recovery-safe" + }, + "lookup-all": { + "checks": 123, + "boundary_restarts": 32, + "sigkill_restarts": 0, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed", + "sigkill_scope": "skipped: lookup-PC Get left a shared allocator spinlock held after SIGKILL; these lookup ablations are not claimed recovery-safe" + }, + "lookup_pc_sigkill_failure": { + "status": "failed", + "resume_timeout_seconds": 120, + "reproduced": true, + "trace": "sbo_lock -> sbo_allocated_size -> read_tlv -> kvspaceShmGet -> kvspaceGet -> body -> main", + "scope": "per-instruction Get baseline, shared allocator read lock has no owner-death recovery" + } +} diff --git a/bench/native/results/medians-us.json b/bench/native/results/medians-us.json new file mode 100644 index 00000000..df656b42 --- /dev/null +++ b/bench/native/results/medians-us.json @@ -0,0 +1,38 @@ +{ + "iops(2000)": { + "interpreter": 25361.682, + "release": 17972.874, + "native": 193.259, + "python": 94.309 + }, + "iops(200000)": { + "interpreter": 2290596.472, + "release": 1623716.852, + "native": 17437.164, + "python": 9058.167 + }, + "fib(10)": { + "interpreter": 34910.716, + "release": 29551.701, + "native": 37.299, + "python": 19.163 + }, + "fib(18)": { + "interpreter": 1690095.766, + "release": 1392759.088, + "native": 1420.688, + "python": 519.151 + }, + "nqueens(6)": { + "interpreter": 91250.42, + "release": 77563.669, + "native": 117.273, + "python": 80.177 + }, + "nqueens(8)": { + "interpreter": 1182105.968, + "release": 989394.443, + "native": 1504.573, + "python": 796.319 + } +} diff --git a/bench/native/results/metadata.json b/bench/native/results/metadata.json new file mode 100644 index 00000000..46160dc6 --- /dev/null +++ b/bench/native/results/metadata.json @@ -0,0 +1,1160 @@ +{ + "cpu": 24, + "cpu_model": "Intel(R) Xeon(R) Gold 6418H", + "python": "3.10.12", + "pairs": 9, + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0", + "worker_flags": "-O3 -std=c11 -Wall -Wextra -Werror", + "timing": "fresh init each sample; native execute includes every redo commit, excludes init/attach/schema/result/status; wall includes init and run; interpreter/Python use fixture timers", + "inputs": { + "iops": { + "scales": [ + 2000, + 200000 + ], + "kv_sha256": "360d3a2b7bd4d014255ba34cd86f6c72ee72a46b4787ed248ee5a6db96887dd7", + "python_sha256": "e53ef1d628cf1b39be8e2ee2e7ee04a9e0517403226e5f8f18ada9a44ce12d04", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\niops(n) -> r\n}\n", + "worker_sha256": "ee6fe783d752f1984f0a898549973856f33ee2ce6b984e210004af9e4a63b39f", + "generated_c_sha256": "9ce910579aa24143786534b5f0c1967928d65a8543b7dc0de4aaefe0f5bc7e94", + "schema": { + "entry": "bench_native", + "stride": 10, + "functions": { + "bench_native": { + "id": 0, + "nr": 1, + "slots": { + "*[0,-1]": 0, + "*[0,1]": 1 + }, + "instructions": [ + [ + "iops", + [ + [ + "slot", + "*[0,-1]" + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + true + ], + [ + "return", + [], + [], + false + ] + ] + }, + "iops": { + "id": 1, + "nr": 1, + "slots": { + "*[0,-1]": 0, + "*[0,1]": 1, + "i": 2, + "_1": 3 + }, + "instructions": [ + [ + "=", + [ + [ + "constant", + 0 + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + false + ], + [ + "=", + [ + [ + "constant", + 1 + ] + ], + [ + [ + "slot", + "i" + ] + ], + false + ], + [ + "goto", + [ + [ + "constant", + 2 + ] + ], + [], + false + ], + [ + "int64\u00b7le", + [ + [ + "slot", + "i" + ], + [ + "slot", + "*[0,-1]" + ] + ], + [ + [ + "slot", + "_1" + ] + ], + false + ], + [ + "br", + [ + [ + "slot", + "_1" + ], + [ + "constant", + 3 + ], + [ + "constant", + 4 + ] + ], + [], + false + ], + [ + "int64\u00b7add", + [ + [ + "slot", + "*[0,1]" + ], + [ + "constant", + 1 + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + false + ], + [ + "int64\u00b7add", + [ + [ + "slot", + "i" + ], + [ + "constant", + 1 + ] + ], + [ + [ + "slot", + "i" + ] + ], + false + ], + [ + "goto", + [ + [ + "constant", + 2 + ] + ], + [], + false + ], + [ + "return", + [], + [], + false + ] + ] + } + }, + "constants": [ + [ + 1, + 0 + ], + [ + 1, + 1 + ], + [ + 1, + 4 + ], + [ + 1, + 6 + ], + [ + 1, + 9 + ] + ], + "program_sha256": "061928f4d2ae534ff0064cc4cc1475975d6f94c6d3cc1abe19b503ca40b214c3" + } + }, + "fib": { + "scales": [ + 10, + 18 + ], + "kv_sha256": "f9f308e2939ecd712442586ee87b8340f55331e75bcd6a6c6ffc12aea3a7bab4", + "python_sha256": "63a329cd3bbc9271f9142f9fa762b3389c17525679763a14e21a7138e12987fa", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\nfib(n) -> r\n}\n", + "worker_sha256": "10804d0ece609d22c9467f0db04981447464a4a82f7e4462d4343fd71b3f6fc8", + "generated_c_sha256": "95b78c2c7c4a1e16b991dd0a175732617072ae20322628aae1be84cab3470e8e", + "schema": { + "entry": "bench_native", + "stride": 16, + "functions": { + "bench_native": { + "id": 0, + "nr": 1, + "slots": { + "*[0,-1]": 0, + "*[0,1]": 1 + }, + "instructions": [ + [ + "fib", + [ + [ + "slot", + "*[0,-1]" + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + true + ], + [ + "return", + [], + [], + false + ] + ] + }, + "fib": { + "id": 1, + "nr": 1, + "slots": { + "*[0,-1]": 0, + "*[0,1]": 1, + "_1": 2, + "a": 3, + "b": 4, + "x": 5, + "y": 6 + }, + "instructions": [ + [ + "goto", + [ + [ + "constant", + 0 + ] + ], + [], + false + ], + [ + "int64\u00b7le", + [ + [ + "slot", + "*[0,-1]" + ], + [ + "constant", + 1 + ] + ], + [ + [ + "slot", + "_1" + ] + ], + false + ], + [ + "br", + [ + [ + "slot", + "_1" + ], + [ + "constant", + 2 + ], + [ + "constant", + 3 + ] + ], + [], + false + ], + [ + "=", + [ + [ + "slot", + "*[0,-1]" + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + false + ], + [ + "goto", + [ + [ + "constant", + 4 + ] + ], + [], + false + ], + [ + "int64\u00b7sub", + [ + [ + "slot", + "*[0,-1]" + ], + [ + "constant", + 1 + ] + ], + [ + [ + "slot", + "a" + ] + ], + false + ], + [ + "int64\u00b7sub", + [ + [ + "slot", + "*[0,-1]" + ], + [ + "constant", + 0 + ] + ], + [ + [ + "slot", + "b" + ] + ], + false + ], + [ + "fib", + [ + [ + "slot", + "a" + ] + ], + [ + [ + "slot", + "x" + ] + ], + true + ], + [ + "fib", + [ + [ + "slot", + "b" + ] + ], + [ + [ + "slot", + "y" + ] + ], + true + ], + [ + "+", + [ + [ + "slot", + "x" + ], + [ + "slot", + "y" + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + false + ], + [ + "goto", + [ + [ + "constant", + 4 + ] + ], + [], + false + ], + [ + "return", + [], + [], + false + ] + ] + } + }, + "constants": [ + [ + 1, + 2 + ], + [ + 1, + 1 + ], + [ + 1, + 4 + ], + [ + 1, + 6 + ], + [ + 1, + 12 + ] + ], + "program_sha256": "cbb5cc962a77407c132badedfb26c68c16044b730e8c314d5646f7578b39af4d" + } + }, + "nqueens": { + "scales": [ + 6, + 8 + ], + "kv_sha256": "e4ba6073d1cd9e76949e3b81b46604e28b97e712afd6f6158db811f7e97c169b", + "python_sha256": "61ebaeccf79bf06a85e213180930552748cca126ec60b8636a7ed7849765a8af", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\n1 << n -> sh\nsh - 1 -> all\nnq(0, 0, 0, all) -> r\n}\n", + "worker_sha256": "6ad0ee255994f969039822aa0dfca3668433d028f1ff53242db321d439cf5e83", + "generated_c_sha256": "9489b22c91024398f33838ab385d13ebd39f4eb28eae5270b7f512bfe3315885", + "schema": { + "entry": "bench_native", + "stride": 40, + "functions": { + "bench_native": { + "id": 0, + "nr": 1, + "slots": { + "*[0,-1]": 0, + "*[0,1]": 1, + "sh": 2, + "all": 3 + }, + "instructions": [ + [ + "int64\u00b7shl", + [ + [ + "constant", + 0 + ], + [ + "slot", + "*[0,-1]" + ] + ], + [ + [ + "slot", + "sh" + ] + ], + false + ], + [ + "int64\u00b7sub", + [ + [ + "slot", + "sh" + ], + [ + "constant", + 0 + ] + ], + [ + [ + "slot", + "all" + ] + ], + false + ], + [ + "nq", + [ + [ + "constant", + 1 + ], + [ + "constant", + 1 + ], + [ + "constant", + 1 + ], + [ + "slot", + "all" + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + true + ], + [ + "return", + [], + [], + false + ] + ] + }, + "nq": { + "id": 1, + "nr": 4, + "slots": { + "*[0,-1]": 0, + "*[0,-2]": 1, + "*[0,-3]": 2, + "*[0,-4]": 3, + "*[0,1]": 4, + "_1": 5, + "occ0": 6, + "occ1": 7, + "occ": 8, + "avail": 9, + "_6": 10, + "neg": 11, + "p": 12, + "nc": 13, + "u1": 14, + "nd1": 15, + "u2": 16, + "nd2": 17, + "sub": 18 + }, + "instructions": [ + [ + "goto", + [ + [ + "constant", + 2 + ] + ], + [], + false + ], + [ + "int64\u00b7eq", + [ + [ + "slot", + "*[0,-1]" + ], + [ + "slot", + "*[0,-4]" + ] + ], + [ + [ + "slot", + "_1" + ] + ], + false + ], + [ + "br", + [ + [ + "slot", + "_1" + ], + [ + "constant", + 3 + ], + [ + "constant", + 4 + ] + ], + [], + false + ], + [ + "=", + [ + [ + "constant", + 0 + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + false + ], + [ + "goto", + [ + [ + "constant", + 5 + ] + ], + [], + false + ], + [ + "=", + [ + [ + "constant", + 1 + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + false + ], + [ + "int64\u00b7bitor", + [ + [ + "slot", + "*[0,-1]" + ], + [ + "slot", + "*[0,-2]" + ] + ], + [ + [ + "slot", + "occ0" + ] + ], + false + ], + [ + "int64\u00b7bitor", + [ + [ + "slot", + "occ0" + ], + [ + "slot", + "*[0,-3]" + ] + ], + [ + [ + "slot", + "occ1" + ] + ], + false + ], + [ + "int64\u00b7bitand", + [ + [ + "slot", + "occ1" + ], + [ + "slot", + "*[0,-4]" + ] + ], + [ + [ + "slot", + "occ" + ] + ], + false + ], + [ + "int64\u00b7bitxor", + [ + [ + "slot", + "occ" + ], + [ + "slot", + "*[0,-4]" + ] + ], + [ + [ + "slot", + "avail" + ] + ], + false + ], + [ + "goto", + [ + [ + "constant", + 6 + ] + ], + [], + false + ], + [ + "return", + [], + [], + false + ], + [ + "int64\u00b7neq", + [ + [ + "slot", + "avail" + ], + [ + "constant", + 1 + ] + ], + [ + [ + "slot", + "_6" + ] + ], + false + ], + [ + "br", + [ + [ + "slot", + "_6" + ], + [ + "constant", + 7 + ], + [ + "constant", + 8 + ] + ], + [], + false + ], + [ + "int64\u00b7sub", + [ + [ + "constant", + 1 + ], + [ + "slot", + "avail" + ] + ], + [ + [ + "slot", + "neg" + ] + ], + false + ], + [ + "int64\u00b7bitand", + [ + [ + "slot", + "avail" + ], + [ + "slot", + "neg" + ] + ], + [ + [ + "slot", + "p" + ] + ], + false + ], + [ + "int64\u00b7bitxor", + [ + [ + "slot", + "avail" + ], + [ + "slot", + "p" + ] + ], + [ + [ + "slot", + "avail" + ] + ], + false + ], + [ + "int64\u00b7bitor", + [ + [ + "slot", + "*[0,-1]" + ], + [ + "slot", + "p" + ] + ], + [ + [ + "slot", + "nc" + ] + ], + false + ], + [ + "int64\u00b7bitor", + [ + [ + "slot", + "*[0,-2]" + ], + [ + "slot", + "p" + ] + ], + [ + [ + "slot", + "u1" + ] + ], + false + ], + [ + "int64\u00b7shl", + [ + [ + "slot", + "u1" + ], + [ + "constant", + 0 + ] + ], + [ + [ + "slot", + "nd1" + ] + ], + false + ], + [ + "int64\u00b7bitor", + [ + [ + "slot", + "*[0,-3]" + ], + [ + "slot", + "p" + ] + ], + [ + [ + "slot", + "u2" + ] + ], + false + ], + [ + "int64\u00b7shr", + [ + [ + "slot", + "u2" + ], + [ + "constant", + 0 + ] + ], + [ + [ + "slot", + "nd2" + ] + ], + false + ], + [ + "nq", + [ + [ + "slot", + "nc" + ], + [ + "slot", + "nd1" + ], + [ + "slot", + "nd2" + ], + [ + "slot", + "*[0,-4]" + ] + ], + [ + [ + "slot", + "sub" + ] + ], + true + ], + [ + "int64\u00b7add", + [ + [ + "slot", + "*[0,1]" + ], + [ + "slot", + "sub" + ] + ], + [ + [ + "slot", + "*[0,1]" + ] + ], + false + ], + [ + "goto", + [ + [ + "constant", + 6 + ] + ], + [], + false + ], + [ + "goto", + [ + [ + "constant", + 5 + ] + ], + [], + false + ] + ] + } + }, + "constants": [ + [ + 1, + 1 + ], + [ + 1, + 0 + ], + [ + 1, + 2 + ], + [ + 1, + 4 + ], + [ + 1, + 6 + ], + [ + 1, + 12 + ], + [ + 1, + 13 + ], + [ + 1, + 15 + ], + [ + 1, + 26 + ] + ], + "program_sha256": "65472c50d9070ae66cde783ccd390fbf4b172521679f090839d6138a7a3c9d1c" + } + } + }, + "libraries": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-frontend-main-default/libkvspace.so.1": "f8307c3a6125da96c02b04c2ad2fbf11bdf6aa3cb3534bfbfa20369531771122", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "kvlang": { + "path": "/tmp/kvlang-perf-current/bin/kvlang", + "sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a" + }, + "interpreter_loaded": { + "/tmp/kvspace-frontend-main-default/libkvspace.so.1": "f8307c3a6125da96c02b04c2ad2fbf11bdf6aa3cb3534bfbfa20369531771122", + "/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" + }, + "release_loaded": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/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" + }, + "native_loaded": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + } +} diff --git a/bench/native/results/samples.csv b/bench/native/results/samples.csv new file mode 100644 index 00000000..a36c8ef1 --- /dev/null +++ b/bench/native/results/samples.csv @@ -0,0 +1,217 @@ +case,scale,pair,variant,kernel_ns,wall_ns,result +iops,2000,0,interpreter,25246391,119132242,2000 +iops,2000,0,release,18369624,102794318,2000 +iops,2000,0,native,193259,8742584,2000 +iops,2000,0,python,94309,26757155,2000 +iops,2000,1,python,93862,25700846,2000 +iops,2000,1,native,197719,8099762,2000 +iops,2000,1,release,18240750,105368770,2000 +iops,2000,1,interpreter,24017780,118340369,2000 +iops,2000,2,interpreter,27226232,123113515,2000 +iops,2000,2,release,17378166,107244429,2000 +iops,2000,2,native,194705,8907963,2000 +iops,2000,2,python,102090,26730163,2000 +iops,2000,3,python,94267,26229511,2000 +iops,2000,3,native,184515,8492302,2000 +iops,2000,3,release,19155453,105476398,2000 +iops,2000,3,interpreter,25361682,120560848,2000 +iops,2000,4,interpreter,25663967,120311387,2000 +iops,2000,4,release,16552143,101967898,2000 +iops,2000,4,native,190190,8701964,2000 +iops,2000,4,python,94152,26374053,2000 +iops,2000,5,python,99629,25537707,2000 +iops,2000,5,native,193974,8224139,2000 +iops,2000,5,release,18231715,105581210,2000 +iops,2000,5,interpreter,24953407,117563983,2000 +iops,2000,6,interpreter,25910383,121704461,2000 +iops,2000,6,release,17197462,101839282,2000 +iops,2000,6,native,187870,9073479,2000 +iops,2000,6,python,94965,26535564,2000 +iops,2000,7,python,96505,25351015,2000 +iops,2000,7,native,190446,8164496,2000 +iops,2000,7,release,17972874,103481104,2000 +iops,2000,7,interpreter,24712147,118176590,2000 +iops,2000,8,interpreter,25489354,118078908,2000 +iops,2000,8,release,16466125,102715280,2000 +iops,2000,8,native,194005,8518310,2000 +iops,2000,8,python,93896,26686608,2000 +iops,200000,0,interpreter,2290596472,2380633359,200000 +iops,200000,0,release,1609620149,1695161550,200000 +iops,200000,0,native,17049943,26409666,200000 +iops,200000,0,python,9063949,35493751,200000 +iops,200000,1,python,8773942,34223908,200000 +iops,200000,1,native,16994466,25209529,200000 +iops,200000,1,release,1624106862,1708308764,200000 +iops,200000,1,interpreter,2386238524,2474581740,200000 +iops,200000,2,interpreter,2302975946,2392638646,200000 +iops,200000,2,release,1640545872,1725362754,200000 +iops,200000,2,native,17437164,26805601,200000 +iops,200000,2,python,9081180,35274162,200000 +iops,200000,3,python,9334939,34749662,200000 +iops,200000,3,native,18330983,26736270,200000 +iops,200000,3,release,1592286917,1672406881,200000 +iops,200000,3,interpreter,2284104131,2374236843,200000 +iops,200000,4,interpreter,2366271411,2457936614,200000 +iops,200000,4,release,1623716852,1709720381,200000 +iops,200000,4,native,17537582,27075511,200000 +iops,200000,4,python,8904889,35303734,200000 +iops,200000,5,python,9058167,35394536,200000 +iops,200000,5,native,18742279,27256127,200000 +iops,200000,5,release,1620768890,1708196462,200000 +iops,200000,5,interpreter,2278546416,2371906164,200000 +iops,200000,6,interpreter,2304987473,2393427349,200000 +iops,200000,6,release,1655316715,1738893886,200000 +iops,200000,6,native,16573320,26090101,200000 +iops,200000,6,python,9165191,35732857,200000 +iops,200000,7,python,8299186,33248251,200000 +iops,200000,7,native,16660364,24974394,200000 +iops,200000,7,release,1619518077,1697281849,200000 +iops,200000,7,interpreter,2272301795,2365706400,200000 +iops,200000,8,interpreter,2286023281,2375075043,200000 +iops,200000,8,release,1635553458,1717468548,200000 +iops,200000,8,native,17904938,26746397,200000 +iops,200000,8,python,8245791,34062469,200000 +fib,10,0,interpreter,33584633,125126388,55 +fib,10,0,release,29573807,115897294,55 +fib,10,0,native,39046,9076484,55 +fib,10,0,python,19953,26735040,55 +fib,10,1,python,18214,25644710,55 +fib,10,1,native,36224,8279775,55 +fib,10,1,release,30512108,112351648,55 +fib,10,1,interpreter,38637626,127846141,55 +fib,10,2,interpreter,34718549,128680245,55 +fib,10,2,release,29616542,113682747,55 +fib,10,2,native,37510,9668368,55 +fib,10,2,python,19163,27116241,55 +fib,10,3,python,19413,25525680,55 +fib,10,3,native,36603,7816574,55 +fib,10,3,release,28952093,112237408,55 +fib,10,3,interpreter,36075978,135221471,55 +fib,10,4,interpreter,34798387,131051424,55 +fib,10,4,release,29096535,112201942,55 +fib,10,4,native,39727,8541323,55 +fib,10,4,python,19269,26694713,55 +fib,10,5,python,18593,25824096,55 +fib,10,5,native,37299,8480517,55 +fib,10,5,release,28976083,115497012,55 +fib,10,5,interpreter,34910716,131572916,55 +fib,10,6,interpreter,35968667,125886652,55 +fib,10,6,release,29551701,115578710,55 +fib,10,6,native,38614,8436928,55 +fib,10,6,python,19407,26751616,55 +fib,10,7,python,18499,25606618,55 +fib,10,7,native,35507,8533193,55 +fib,10,7,release,30362216,114002806,55 +fib,10,7,interpreter,34860448,131082123,55 +fib,10,8,interpreter,36617355,130209939,55 +fib,10,8,release,28183477,112371821,55 +fib,10,8,native,33856,8876459,55 +fib,10,8,python,18946,26491131,55 +fib,18,0,interpreter,1723183986,1813176855,2584 +fib,18,0,release,1392759088,1480673438,2584 +fib,18,0,native,1461286,11293446,2584 +fib,18,0,python,506706,27206739,2584 +fib,18,1,python,540518,26052976,2584 +fib,18,1,native,1414205,9406715,2584 +fib,18,1,release,1395259406,1479140650,2584 +fib,18,1,interpreter,1656403564,1750658877,2584 +fib,18,2,interpreter,1700963500,1799143289,2584 +fib,18,2,release,1397709583,1479380720,2584 +fib,18,2,native,1434463,11013222,2584 +fib,18,2,python,549781,27337281,2584 +fib,18,3,python,522603,26456617,2584 +fib,18,3,native,1461552,10022218,2584 +fib,18,3,release,1388063830,1470812179,2584 +fib,18,3,interpreter,1641549530,1733782573,2584 +fib,18,4,interpreter,1656340509,1748925532,2584 +fib,18,4,release,1369937240,1452998696,2584 +fib,18,4,native,1427837,10480737,2584 +fib,18,4,python,507571,27325432,2584 +fib,18,5,python,512588,26502795,2584 +fib,18,5,native,1420688,10437612,2584 +fib,18,5,release,1402955139,1493209326,2584 +fib,18,5,interpreter,1690655085,1787373272,2584 +fib,18,6,interpreter,1670237912,1764613817,2584 +fib,18,6,release,1358939526,1442579108,2584 +fib,18,6,native,1277590,10987715,2584 +fib,18,6,python,535738,27610133,2584 +fib,18,7,python,495947,26189386,2584 +fib,18,7,native,1384376,9962426,2584 +fib,18,7,release,1364065126,1445278371,2584 +fib,18,7,interpreter,1690095766,1779172844,2584 +fib,18,8,interpreter,1705479087,1796662692,2584 +fib,18,8,release,1399299776,1484584535,2584 +fib,18,8,native,1418285,10300441,2584 +fib,18,8,python,519151,26934700,2584 +nqueens,6,0,interpreter,96344333,187478570,4 +nqueens,6,0,release,76935338,166293053,4 +nqueens,6,0,native,115936,9661290,4 +nqueens,6,0,python,80177,26979947,4 +nqueens,6,1,python,79426,25782102,4 +nqueens,6,1,native,117273,7933350,4 +nqueens,6,1,release,77563669,162366254,4 +nqueens,6,1,interpreter,91880327,182779168,4 +nqueens,6,2,interpreter,89853661,181801404,4 +nqueens,6,2,release,78118074,160795840,4 +nqueens,6,2,native,119775,8798822,4 +nqueens,6,2,python,77958,27102565,4 +nqueens,6,3,python,88324,26058024,4 +nqueens,6,3,native,120350,8176232,4 +nqueens,6,3,release,79855636,165981139,4 +nqueens,6,3,interpreter,91512811,187530135,4 +nqueens,6,4,interpreter,91250420,180462010,4 +nqueens,6,4,release,74822768,158594131,4 +nqueens,6,4,native,121292,8796413,4 +nqueens,6,4,python,78677,26800594,4 +nqueens,6,5,python,85127,25763189,4 +nqueens,6,5,native,121940,8324578,4 +nqueens,6,5,release,77271354,160935326,4 +nqueens,6,5,interpreter,89581929,180406718,4 +nqueens,6,6,interpreter,92523601,187448791,4 +nqueens,6,6,release,78733228,161669139,4 +nqueens,6,6,native,116265,9045887,4 +nqueens,6,6,python,85041,26990946,4 +nqueens,6,7,python,82830,25809010,4 +nqueens,6,7,native,116507,8176012,4 +nqueens,6,7,release,76289886,161903685,4 +nqueens,6,7,interpreter,89024987,177887767,4 +nqueens,6,8,interpreter,87825474,178470567,4 +nqueens,6,8,release,79654069,162865950,4 +nqueens,6,8,native,111828,8197935,4 +nqueens,6,8,python,79364,26370462,4 +nqueens,8,0,interpreter,1178634068,1272462059,92 +nqueens,8,0,release,984951495,1069301183,92 +nqueens,8,0,native,1458144,10228027,92 +nqueens,8,0,python,818993,27582786,92 +nqueens,8,1,python,857947,26427969,92 +nqueens,8,1,native,1488441,9706966,92 +nqueens,8,1,release,1000559967,1087186904,92 +nqueens,8,1,interpreter,1182883680,1277526558,92 +nqueens,8,2,interpreter,1181810876,1272941031,92 +nqueens,8,2,release,986543034,1073764909,92 +nqueens,8,2,native,1401917,10113208,92 +nqueens,8,2,python,796319,27916410,92 +nqueens,8,3,python,776700,26241314,92 +nqueens,8,3,native,1504573,9489306,92 +nqueens,8,3,release,989394443,1072763745,92 +nqueens,8,3,interpreter,1182105968,1275306189,92 +nqueens,8,4,interpreter,1186498191,1278359744,92 +nqueens,8,4,release,981330680,1065842334,92 +nqueens,8,4,native,1490697,10756253,92 +nqueens,8,4,python,823048,27685132,92 +nqueens,8,5,python,791816,26339229,92 +nqueens,8,5,native,1532762,10032570,92 +nqueens,8,5,release,992892507,1076427984,92 +nqueens,8,5,interpreter,1180732800,1273880073,92 +nqueens,8,6,interpreter,1210960445,1303915645,92 +nqueens,8,6,release,978098231,1061115737,92 +nqueens,8,6,native,1541876,10734738,92 +nqueens,8,6,python,789444,27361832,92 +nqueens,8,7,python,802381,26710225,92 +nqueens,8,7,native,1520615,9618934,92 +nqueens,8,7,release,997359337,1080567018,92 +nqueens,8,7,interpreter,1181759677,1279903848,92 +nqueens,8,8,interpreter,1190068601,1280690988,92 +nqueens,8,8,release,996972330,1082763160,92 +nqueens,8,8,native,1507060,11327921,92 +nqueens,8,8,python,735574,27366575,92 diff --git a/bench/native/results/strategies/.gitignore b/bench/native/results/strategies/.gitignore new file mode 100644 index 00000000..09328be3 --- /dev/null +++ b/bench/native/results/strategies/.gitignore @@ -0,0 +1 @@ +binaries/ diff --git a/bench/native/results/strategies/codegen.json b/bench/native/results/strategies/codegen.json new file mode 100644 index 00000000..fe4fc25f --- /dev/null +++ b/bench/native/results/strategies/codegen.json @@ -0,0 +1,113 @@ +{ + "iops": { + "aot": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "9a3fe6451d94d3cc2f8cb4e3c135c89d49efa41c7b9f9496bc9fc7aeec3a1360" + }, + "decoded": { + "instruction_table_retained": true, + "opcode_helpers": 0, + "worker_sha256": "f2077e885b65a9cdb9b2f0dbf60d615b83615f63b9b8788804efd2a54e8634be" + }, + "partial": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "ea91c0183d83d667476ccacf06179d6f2a19ffb20623200376516a07a0a03c97" + }, + "guarded": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "8ff77a1d37932076756f526a201455b324a8c6892028a867ae2f78670b36bc47" + }, + "copy-patch": { + "instruction_table_retained": true, + "opcode_helpers": 7, + "worker_sha256": "28e6bc93e37d056eeb0f74772f428827a8d8cf6de624ef707bbbd6b776e83e46" + }, + "copy-patch-guarded": { + "instruction_table_retained": true, + "opcode_helpers": 7, + "worker_sha256": "843a116a2377d3fac166bb6cb9fbdf53965d8922434c8108d6cc4abbd35c2fe9" + }, + "address-cache": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "27769f9d5af968d3f162f5726fa46e7f4e98aa5bc7938ae137df414ed790045e" + } + }, + "fib": { + "aot": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "1fbf2a34bc09aaab00fedb9746d502e9be8a12bc87f4e5119e41018fd7ada24a" + }, + "decoded": { + "instruction_table_retained": true, + "opcode_helpers": 0, + "worker_sha256": "8cc453ea2965135f716143076791937b57bae06cdc0245d9637270fa777d7dd9" + }, + "partial": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "8528cf5e8e15969208ee32eaef80c7b28c4f1f508180013a342e0661f4090095" + }, + "guarded": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "c7ee7494561ac85f7c83fc668a6c6626b1d73630f8a7c9f4e00d214e0402d326" + }, + "copy-patch": { + "instruction_table_retained": true, + "opcode_helpers": 8, + "worker_sha256": "dae54d06d240ca7f585efb8b0eb64ab1f39d8936cb454693b7b88f2f8393d11b" + }, + "copy-patch-guarded": { + "instruction_table_retained": true, + "opcode_helpers": 8, + "worker_sha256": "403cf563bc8e5975af0f54a9278404aa613eb55f6b40d10db4f35d2ab88ba3e0" + }, + "address-cache": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "6eda38fccd1bdb2ec148a691a670f9dc9ced4d3faf04d59082d167345bcd7ffb" + } + }, + "nqueens": { + "aot": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "ff84d32d14ee89a49a0928f21f3029a1599e3b03dc4a2cb436e9dc3dd15e3118" + }, + "decoded": { + "instruction_table_retained": true, + "opcode_helpers": 0, + "worker_sha256": "ea9e929987b61d81aa5e045d052a9d24ac8deb02a0185235d446a53bdc8ba70c" + }, + "partial": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "b6e07cd2aa6828c4e2ef6d16dc32b1ad52185dea5c6d9223eef13b6f2f5552de" + }, + "guarded": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "a4c1aee9b10a7e3958b1da80a5fc7e4c62f340abdf0c867a9910f244d48e14b5" + }, + "copy-patch": { + "instruction_table_retained": true, + "opcode_helpers": 14, + "worker_sha256": "66e6c59f239d2d8d42e3ed6859bd031a7b438f2895aa26931d45ef0d42cec894" + }, + "copy-patch-guarded": { + "instruction_table_retained": true, + "opcode_helpers": 14, + "worker_sha256": "162996df80b815c5f971e176a3e5edc257ac8531352e0c9d2339cba333e32924" + }, + "address-cache": { + "instruction_table_retained": false, + "opcode_helpers": 0, + "worker_sha256": "425a118d1489718137d2991844cf6ec75cea0fae68c09b96fa552182d5052790" + } + } +} diff --git a/bench/native/results/strategies/independent-validation.json b/bench/native/results/strategies/independent-validation.json new file mode 100644 index 00000000..c2a96235 --- /dev/null +++ b/bench/native/results/strategies/independent-validation.json @@ -0,0 +1,250 @@ +{ + "review_type": "independent read-only implementation and measurement review; separate final publication review still required", + "verdict": "approved", + "blockers": [], + "head": "90b441ba34b84f47653d3ebf248160440e6bcf7f", + "reviewed_generator_sha256": { + "compile.py": "09b83220b66fc996658f46b72de307a2cc502e7e1f7d803956866e0d35c6bc68", + "strategies.py": "c073f1278285576f173aa1ca4a9a12a1f96ccc9adfff0f610f777d6e94f006f5", + "strategies.c.in": "471fe04023854f2e2e7d3f5466f0309a6b25870c9114b930226038315a982b81", + "worker.c.in": "c52890d0108cb1900bc534dc3567237e428a524314e70b16918e922cd3f6c385", + "run.py": "840ea3d9d879b3be393fd5fd9b3d14b52af84611112b5b7959cbfde0e7049070" + }, + "final_recorded_evidence": { + "samples": 864, + "native_methods": 7, + "input_sizes": 12, + "alternating_pairs": 9, + "equal_final_state_groups": 108, + "independent_oracle_outputs": "passed", + "pair_order_and_kernel_wall_jit_summary_recomputation": "passed", + "paired_aot_ratios": "passed", + "generated_c_recreated_from_current_source": 18, + "worker_hashes_verified": 21, + "codegen_symbol_records_verified": 21, + "generator_hashes_verified": 5, + "historical_evidence_files_unchanged": 11, + "samples_sha256": "b563b3362965f7642818379e533d8f3d6ec17599d34b6beb2cb02ec9c81bd774", + "metadata_sha256": "f6579fb808dc1984e2e5673fce2b0302cbe3d2264a1578d2138ee80835995697" + }, + "implementation_review": { + "state_ownership": "PC, operands, constants, user frames and redo remain in KVSpace; local context and values last one instruction", + "address_cache": "terminal pointers only; every cached edge strictly decreases frame depth; child-frame reuse clears its entries; same/forward chains use generic traversal without intermediate cache lookups", + "guard_fallback_and_bounds": "preserve original traversal and validation", + "copy_patch": "26-byte copied x86-64 SysV stencil patches descriptor and opcode-helper addresses; mapping changes RW to RX; no RWX interval", + "partial_evaluation": "constant-descriptor/opcode specialization; descriptor symbols eliminated in partial, guarded and address-cache binaries", + "named_method_limits": "copy-patch is an opcode-helper dispatch JIT; offline cc compilation remains required; JIT timing measures mmap/copy/patch/mprotect only", + "redundancy": "shared instruction emitter, paired sampling and final-state digest remove duplicate semantics/verification logic; no remaining unnecessary logic identified" + }, + "current_snapshot_independent_cpu25": { + "samples": 72, + "alternating_pairs": 3, + "groups": 9, + "inputs": [ + "iops(200000)", + "fib(18)", + "nqueens(8)" + ], + "native_methods": 7, + "outputs_and_final_state_digests": "all equal", + "oracle_results": "passed", + "scope": "three large inputs only; trend check, separate from final CPU24 results", + "samples_sha256": "874bce66a57b320eaae0cefb347c7cfd31792a7964222679992d5a375789ab60", + "large_input_summary": { + "iops": { + "medians_us": { + "aot": 17868.933, + "decoded": 22749.6, + "partial": 21153.214, + "guarded": 17422.787, + "copy-patch": 18990.512, + "copy-patch-guarded": 17713.345, + "address-cache": 17486.683, + "python": 9301.387 + }, + "paired_speedups": { + "aot/decoded": { + "median": 0.8104021656163671, + "minimum": 0.7771306666026485, + "maximum": 0.8270269367373493 + }, + "aot/partial": { + "median": 0.8447384402200063, + "minimum": 0.7893228850033607, + "maximum": 0.8961502494827182 + }, + "aot/guarded": { + "median": 1.0153415507231176, + "minimum": 0.9993286952311361, + "maximum": 1.0810148726984985 + }, + "aot/copy-patch": { + "median": 0.9498016592595963, + "minimum": 0.9020918151721921, + "maximum": 0.990733267223127 + }, + "aot/copy-patch-guarded": { + "median": 1.031206982986608, + "minimum": 0.9829363680321249, + "maximum": 1.0598230493672955 + }, + "aot/address-cache": { + "median": 1.0315140682356232, + "minimum": 1.00613163206041, + "maximum": 1.0759348699807734 + }, + "partial/address-cache": { + "median": 1.200618836631281, + "minimum": 1.1910569996061382, + "maximum": 1.306834107858448 + } + } + }, + "fib": { + "medians_us": { + "aot": 1444.387, + "decoded": 1673.12, + "partial": 1504.745, + "guarded": 1444.538, + "copy-patch": 1361.905, + "copy-patch-guarded": 1330.984, + "address-cache": 1468.789, + "python": 517.103 + }, + "paired_speedups": { + "aot/decoded": { + "median": 0.8638065410729655, + "minimum": 0.8156767002198443, + "maximum": 0.8647387679936012 + }, + "aot/partial": { + "median": 0.959888220263234, + "minimum": 0.9034717344866305, + "maximum": 0.9848744214445759 + }, + "aot/guarded": { + "median": 0.9875752662789071, + "minimum": 0.9780008761731681, + "maximum": 1.0005600774831545 + }, + "aot/copy-patch": { + "median": 1.051018904622276, + "minimum": 1.0279595559322783, + "maximum": 1.061198835454749 + }, + "aot/copy-patch-guarded": { + "median": 1.0858522717027401, + "minimum": 0.989688189841646, + "maximum": 1.092162431512391 + }, + "aot/address-cache": { + "median": 0.9828577335376233, + "minimum": 0.9781575731977735, + "maximum": 0.9833863134868248 + }, + "partial/address-cache": { + "median": 1.0244800308281177, + "minimum": 0.9979523400516438, + "maximum": 1.082665384937118 + } + } + }, + "nqueens": { + "medians_us": { + "aot": 1480.959, + "decoded": 1753.7, + "partial": 1509.852, + "guarded": 1461.015, + "copy-patch": 1353.356, + "copy-patch-guarded": 1285.36, + "address-cache": 1384.081, + "python": 787.606 + }, + "paired_speedups": { + "aot/decoded": { + "median": 0.8431442093858699, + "minimum": 0.8066427590233742, + "maximum": 0.882672282986015 + }, + "aot/partial": { + "median": 0.9867632530387431, + "minimum": 0.9793158534743802, + "maximum": 0.9906676656119766 + }, + "aot/guarded": { + "median": 1.0120512109731934, + "minimum": 0.9905828480613871, + "maximum": 1.0731363677597858 + }, + "aot/copy-patch": { + "median": 1.1188512113590217, + "minimum": 1.0887358820241968, + "maximum": 1.1277877537592698 + }, + "aot/copy-patch-guarded": { + "median": 1.1780388373685193, + "minimum": 1.126464977454864, + "maximum": 1.182858802231287 + }, + "aot/address-cache": { + "median": 1.0755607813972945, + "minimum": 1.0683059734220757, + "maximum": 1.083837182918336 + }, + "partial/address-cache": { + "median": 1.0908696817599548, + "minimum": 1.0856928299288702, + "maximum": 1.0983761095487221 + } + } + } + } + }, + "current_snapshot_independent_custom_checks": { + "checks": 28, + "native_methods": 7, + "inputs": [ + -4, + 0, + 7 + ], + "coverage": [ + "same child frame reused with different caller argument/output slots", + "zero-arity callee", + "live constant edited from5 to6" + ], + "outputs_and_exact_final_digest_equivalence": "passed", + "fixture_sha256": "bc1f3aa9de6a717907f4cf39b3b5527043563fa239407ea92e229d8603c1779a", + "expected_output": "2*n+17; edited-constant result32 at n7" + }, + "recorded_full_validation_reviewed": { + "scope": "validation.json reviewed; full suites were not independently rerun by this reviewer", + "native_suites": 7, + "checks_per_suite": 147, + "sigkill_restarts_per_suite": 24, + "boundary_restarts_per_suite": 32, + "cross_method_resumes": 49, + "live_edit_groups": 7, + "prepared_call_replays": 7, + "address_cache_fixture_groups": 3 + }, + "prior_pre_address_cache_checks": { + "scope": "prior six-native-method snapshot; not final address-cache validation", + "cpu25_large_samples": 63, + "cross_method_resumes_at_instruction37": 36, + "negative_state_groups": 7, + "negative_state_exact_comparison": "included error KV", + "forced_rx_denial_modes": [ + "copy-patch", + "copy-patch-guarded" + ], + "forced_rx_denial_result": "exit3, clean-store KV unchanged, AOT resumed successfully" + }, + "scope_limits": [ + "Linux x86-64 SHM", + "fixed value shapes and exclusive worker", + "scalar accepted subset only", + "execution death/restart checks do not establish death safety during attach/init/reporting", + "CPU25 trends do not support a uniform AOT win or end-to-end compilation advantage" + ] +} diff --git a/bench/native/results/strategies/medians-us.json b/bench/native/results/strategies/medians-us.json new file mode 100644 index 00000000..58e5d836 --- /dev/null +++ b/bench/native/results/strategies/medians-us.json @@ -0,0 +1,698 @@ +{ + "iops(500)": { + "medians_us": { + "aot": 52.001, + "decoded": 63.924, + "partial": 57.149, + "guarded": 49.552, + "copy-patch": 54.148, + "copy-patch-guarded": 52.609, + "address-cache": 47.408, + "python": 25.877 + }, + "wall_medians_ms": { + "aot": 7.625876, + "decoded": 7.703428, + "partial": 7.615447, + "guarded": 7.729145, + "copy-patch": 7.527831, + "copy-patch-guarded": 7.684689, + "address-cache": 7.591197, + "python": 26.027448 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.8137307078233103, + "minimum": 0.7713154978629096, + "maximum": 1.0557301141061683 + }, + "partial": { + "median": 0.9143276114896921, + "minimum": 0.7915008365957862, + "maximum": 1.2324540620228506 + }, + "guarded": { + "median": 1.053350353575264, + "minimum": 0.8319406183042547, + "maximum": 1.4329089128305583 + }, + "copy-patch": { + "median": 0.960072394178917, + "minimum": 0.8671079917052161, + "maximum": 1.2856122878640865 + }, + "copy-patch-guarded": { + "median": 0.998348916236297, + "minimum": 0.9154000789073214, + "maximum": 1.3672897196261682 + }, + "address-cache": { + "median": 1.1103662007463158, + "minimum": 1.0002874153151304, + "maximum": 1.189250759365508 + } + }, + "jit_medians_us": { + "copy-patch": 4.756, + "copy-patch-guarded": 4.786 + } + }, + "iops(1000)": { + "medians_us": { + "aot": 100.345, + "decoded": 123.692, + "partial": 110.805, + "guarded": 93.67, + "copy-patch": 103.024, + "copy-patch-guarded": 97.555, + "address-cache": 90.114, + "python": 48.54 + }, + "wall_medians_ms": { + "aot": 7.629492, + "decoded": 7.581909, + "partial": 7.630691, + "guarded": 7.611463, + "copy-patch": 7.695149, + "copy-patch-guarded": 7.684138, + "address-cache": 7.617875, + "python": 26.262317 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.8134322308690013, + "minimum": 0.7552066244824623, + "maximum": 0.9508043851967176 + }, + "partial": { + "median": 0.905599927801092, + "minimum": 0.8468007857719156, + "maximum": 1.126442192228253 + }, + "guarded": { + "median": 1.0677879883665637, + "minimum": 0.9098522435084924, + "maximum": 1.2518095441443364 + }, + "copy-patch": { + "median": 0.949749313548408, + "minimum": 0.9169334739711195, + "maximum": 1.1568375937859492 + }, + "copy-patch-guarded": { + "median": 1.0064092934755395, + "minimum": 0.681951013972707, + "maximum": 1.2079834166046561 + }, + "address-cache": { + "median": 1.0809246613679615, + "minimum": 1.0387939054392095, + "maximum": 1.301207359566771 + } + }, + "jit_medians_us": { + "copy-patch": 4.959, + "copy-patch-guarded": 4.63 + } + }, + "iops(2000)": { + "medians_us": { + "aot": 191.34, + "decoded": 245.305, + "partial": 216.777, + "guarded": 182.545, + "copy-patch": 205.109, + "copy-patch-guarded": 189.913, + "address-cache": 173.29, + "python": 95.057 + }, + "wall_medians_ms": { + "aot": 8.169009, + "decoded": 7.810361, + "partial": 8.007476, + "guarded": 7.846353, + "copy-patch": 7.92321, + "copy-patch-guarded": 7.787748, + "address-cache": 7.746156, + "python": 26.448429 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.7709620755956101, + "minimum": 0.7127520425391527, + "maximum": 1.0688024358083796 + }, + "partial": { + "median": 0.8773117913188332, + "minimum": 0.8079947200527995, + "maximum": 1.16879088088935 + }, + "guarded": { + "median": 1.0595932734106517, + "minimum": 0.9865363226599544, + "maximum": 1.334978543002317 + }, + "copy-patch": { + "median": 0.9203802998709165, + "minimum": 0.8910524528118783, + "maximum": 1.3300171846207995 + }, + "copy-patch-guarded": { + "median": 1.01726580065609, + "minimum": 0.90222907874244, + "maximum": 1.3336205196342008 + }, + "address-cache": { + "median": 1.1190389304973904, + "minimum": 1.0101648249035542, + "maximum": 1.3921914958172599 + } + }, + "jit_medians_us": { + "copy-patch": 4.916, + "copy-patch-guarded": 4.844 + } + }, + "iops(200000)": { + "medians_us": { + "aot": 17833.929, + "decoded": 22663.596, + "partial": 20945.871, + "guarded": 16533.0, + "copy-patch": 18634.073, + "copy-patch-guarded": 17483.228, + "address-cache": 16510.243, + "python": 8903.252 + }, + "wall_medians_ms": { + "aot": 25.669002, + "decoded": 30.586502, + "partial": 28.644734, + "guarded": 24.552152, + "copy-patch": 26.251257, + "copy-patch-guarded": 25.288196, + "address-cache": 24.416927, + "python": 34.937348 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.7795597051583287, + "minimum": 0.7290193723948107, + "maximum": 0.8504307642282927 + }, + "partial": { + "median": 0.880480454670034, + "minimum": 0.8038433942850722, + "maximum": 0.903622029272938 + }, + "guarded": { + "median": 1.0773897054376096, + "minimum": 0.9776080808604181, + "maximum": 1.1524773322830013 + }, + "copy-patch": { + "median": 0.9642667975565398, + "minimum": 0.9148068964424109, + "maximum": 1.0134972258941992 + }, + "copy-patch-guarded": { + "median": 1.026058932837209, + "minimum": 0.9444267629676163, + "maximum": 1.0836108003772675 + }, + "address-cache": { + "median": 1.0795655835978988, + "minimum": 0.9652170266692419, + "maximum": 1.2004859012760953 + } + }, + "jit_medians_us": { + "copy-patch": 4.745, + "copy-patch-guarded": 4.942 + } + }, + "fib(8)": { + "medians_us": { + "aot": 17.801, + "decoded": 20.078, + "partial": 17.559, + "guarded": 18.105, + "copy-patch": 18.271, + "copy-patch-guarded": 18.09, + "address-cache": 17.678, + "python": 10.435 + }, + "wall_medians_ms": { + "aot": 7.814561, + "decoded": 7.729074, + "partial": 7.727608, + "guarded": 7.75796, + "copy-patch": 7.654348, + "copy-patch-guarded": 7.621502, + "address-cache": 7.797265, + "python": 25.959711 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.8867417073413687, + "minimum": 0.733531914893617, + "maximum": 1.3123617984626723 + }, + "partial": { + "median": 0.9817187766957116, + "minimum": 0.9342989084802686, + "maximum": 1.4329979879275654 + }, + "guarded": { + "median": 0.9649574563367667, + "minimum": 0.9399714904176126, + "maximum": 1.419694726050803 + }, + "copy-patch": { + "median": 0.9704910812596345, + "minimum": 0.769095895337859, + "maximum": 1.3561286110657744 + }, + "copy-patch-guarded": { + "median": 0.9823438534539837, + "minimum": 0.7078368090036412, + "maximum": 1.3664620107444359 + }, + "address-cache": { + "median": 1.0074613815214224, + "minimum": 0.9587208353728177, + "maximum": 1.4033892579664453 + } + }, + "jit_medians_us": { + "copy-patch": 4.51, + "copy-patch-guarded": 4.905 + } + }, + "fib(9)": { + "medians_us": { + "aot": 24.783, + "decoded": 28.97, + "partial": 25.084, + "guarded": 25.882, + "copy-patch": 24.909, + "copy-patch-guarded": 24.839, + "address-cache": 24.898, + "python": 14.799 + }, + "wall_medians_ms": { + "aot": 7.99038, + "decoded": 7.914073, + "partial": 7.722027, + "guarded": 7.723562, + "copy-patch": 7.884177, + "copy-patch-guarded": 7.848667, + "address-cache": 7.94337, + "python": 26.19002 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.8511218501898515, + "minimum": 0.5931660039761432, + "maximum": 0.9060548860171337 + }, + "partial": { + "median": 0.9860156435174212, + "minimum": 0.9525880991339746, + "maximum": 1.0620090122422938 + }, + "guarded": { + "median": 0.9415618448637316, + "minimum": 0.7230092388913331, + "maximum": 1.056699599254057 + }, + "copy-patch": { + "median": 0.9949415873780562, + "minimum": 0.9605753435634441, + "maximum": 1.0611626887675818 + }, + "copy-patch-guarded": { + "median": 0.9987104573846464, + "minimum": 0.8238159328334295, + "maximum": 1.0616279996810971 + }, + "address-cache": { + "median": 0.994543081972399, + "minimum": 0.7974408659628491, + "maximum": 1.0325327335528958 + } + }, + "jit_medians_us": { + "copy-patch": 4.83, + "copy-patch-guarded": 4.724 + } + }, + "fib(10)": { + "medians_us": { + "aot": 36.451, + "decoded": 42.732, + "partial": 37.572, + "guarded": 39.512, + "copy-patch": 35.962, + "copy-patch-guarded": 35.938, + "address-cache": 36.335, + "python": 19.168 + }, + "wall_medians_ms": { + "aot": 7.690734, + "decoded": 7.789066, + "partial": 7.630757, + "guarded": 7.632858, + "copy-patch": 7.777207, + "copy-patch-guarded": 7.65027, + "address-cache": 7.75532, + "python": 26.132394 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.8622932312374221, + "minimum": 0.8146459349778852, + "maximum": 0.949198606271777 + }, + "partial": { + "median": 0.9654103874778187, + "minimum": 0.9327799096770825, + "maximum": 1.0603025506629649 + }, + "guarded": { + "median": 0.9269995877138735, + "minimum": 0.7021803865139796, + "maximum": 1.026297481563935 + }, + "copy-patch": { + "median": 0.9951680388716426, + "minimum": 0.9840082899232622, + "maximum": 1.1362827428952784 + }, + "copy-patch-guarded": { + "median": 1.014274680321538, + "minimum": 0.9783156280801665, + "maximum": 1.1518166699551822 + }, + "address-cache": { + "median": 0.9864655218531001, + "minimum": 0.4094467846110643, + "maximum": 1.1379598429363111 + } + }, + "jit_medians_us": { + "copy-patch": 4.785, + "copy-patch-guarded": 4.706 + } + }, + "fib(18)": { + "medians_us": { + "aot": 1427.003, + "decoded": 1703.371, + "partial": 1513.618, + "guarded": 1478.858, + "copy-patch": 1358.149, + "copy-patch-guarded": 1349.109, + "address-cache": 1470.5, + "python": 513.928 + }, + "wall_medians_ms": { + "aot": 9.161707, + "decoded": 9.591008, + "partial": 9.102126, + "guarded": 8.985723, + "copy-patch": 8.965606, + "copy-patch-guarded": 8.966626, + "address-cache": 9.162385, + "python": 26.663494 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.841182486699972, + "minimum": 0.7961406306466509, + "maximum": 0.9173191245049417 + }, + "partial": { + "median": 0.9612265052899213, + "minimum": 0.904269188544697, + "maximum": 1.0053049349119525 + }, + "guarded": { + "median": 0.955203856709764, + "minimum": 0.8963657218439027, + "maximum": 1.0547297858313291 + }, + "copy-patch": { + "median": 1.0530058524361436, + "minimum": 1.0125290903387245, + "maximum": 1.1280635255078109 + }, + "copy-patch-guarded": { + "median": 1.057737365920767, + "minimum": 1.0182844160568962, + "maximum": 1.1127713228891407 + }, + "address-cache": { + "median": 0.96648000950571, + "minimum": 0.9415755385092363, + "maximum": 0.994822078383446 + } + }, + "jit_medians_us": { + "copy-patch": 4.906, + "copy-patch-guarded": 4.782 + } + }, + "nqueens(4)": { + "medians_us": { + "aot": 20.337, + "decoded": 21.638, + "partial": 19.691, + "guarded": 20.104, + "copy-patch": 21.385, + "copy-patch-guarded": 21.505, + "address-cache": 19.359, + "python": 20.33 + }, + "wall_medians_ms": { + "aot": 7.983957, + "decoded": 7.948847, + "partial": 7.941297, + "guarded": 7.972209, + "copy-patch": 7.814703, + "copy-patch-guarded": 7.830715, + "address-cache": 7.721296, + "python": 26.213553 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.9450455173728611, + "minimum": 0.696768262499116, + "maximum": 0.9799542900676126 + }, + "partial": { + "median": 1.028021978021978, + "minimum": 0.9411709159584514, + "maximum": 1.0625666548169215 + }, + "guarded": { + "median": 1.0115897333863908, + "minimum": 0.8186675047140164, + "maximum": 1.0387678122380553 + }, + "copy-patch": { + "median": 0.9410536307546274, + "minimum": 0.9151741517415174, + "maximum": 0.9806457703927492 + }, + "copy-patch-guarded": { + "median": 0.942664496628691, + "minimum": 0.4953830855194621, + "maximum": 1.046141975308642 + }, + "address-cache": { + "median": 1.0612310840648393, + "minimum": 0.7259021885583191, + "maximum": 1.200828519750277 + } + }, + "jit_medians_us": { + "copy-patch": 5.037, + "copy-patch-guarded": 4.948 + } + }, + "nqueens(5)": { + "medians_us": { + "aot": 45.369, + "decoded": 50.048, + "partial": 44.351, + "guarded": 42.892, + "copy-patch": 42.927, + "copy-patch-guarded": 41.693, + "address-cache": 41.798, + "python": 36.352 + }, + "wall_medians_ms": { + "aot": 7.875865, + "decoded": 7.780675, + "partial": 7.8049, + "guarded": 7.836159, + "copy-patch": 7.770746, + "copy-patch-guarded": 7.863821, + "address-cache": 7.771477, + "python": 26.185784 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.9043053617699821, + "minimum": 0.8310090083298782, + "maximum": 1.0800889184360327 + }, + "partial": { + "median": 1.0200092528336804, + "minimum": 1.0046751750420988, + "maximum": 1.1588649636663546 + }, + "guarded": { + "median": 1.0543958798596236, + "minimum": 0.5267482623761373, + "maximum": 1.0703191388915116 + }, + "copy-patch": { + "median": 1.0575910209526438, + "minimum": 0.9381763257536571, + "maximum": 1.220828930374545 + }, + "copy-patch-guarded": { + "median": 1.0811271818118093, + "minimum": 1.0353855546163238, + "maximum": 1.2557729468599035 + }, + "address-cache": { + "median": 1.0954427390791026, + "minimum": 1.0663266505276519, + "maximum": 1.24527533593619 + } + }, + "jit_medians_us": { + "copy-patch": 5.062, + "copy-patch-guarded": 4.857 + } + }, + "nqueens(6)": { + "medians_us": { + "aot": 117.306, + "decoded": 132.859, + "partial": 115.842, + "guarded": 111.302, + "copy-patch": 106.676, + "copy-patch-guarded": 103.925, + "address-cache": 109.607, + "python": 79.402 + }, + "wall_medians_ms": { + "aot": 7.963852, + "decoded": 7.927107, + "partial": 7.867713, + "guarded": 7.875472, + "copy-patch": 7.695301, + "copy-patch-guarded": 7.803407, + "address-cache": 7.898714, + "python": 26.597549 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.8870386867371723, + "minimum": 0.8646008174079287, + "maximum": 0.9534783352804173 + }, + "partial": { + "median": 1.0040572689130152, + "minimum": 0.9056210482432777, + "maximum": 1.1196186881263817 + }, + "guarded": { + "median": 1.0559736219320872, + "minimum": 1.0307233996733844, + "maximum": 1.1613028938090793 + }, + "copy-patch": { + "median": 1.0950776982082708, + "minimum": 1.0026709961244369, + "maximum": 1.187839516472922 + }, + "copy-patch-guarded": { + "median": 1.1370679607940541, + "minimum": 1.0214843402635745, + "maximum": 1.2440968581304128 + }, + "address-cache": { + "median": 1.0702418641145182, + "minimum": 1.0220730797912005, + "maximum": 1.2243636294144626 + } + }, + "jit_medians_us": { + "copy-patch": 4.867, + "copy-patch-guarded": 5.029 + } + }, + "nqueens(8)": { + "medians_us": { + "aot": 1506.645, + "decoded": 1711.761, + "partial": 1523.178, + "guarded": 1430.915, + "copy-patch": 1320.037, + "copy-patch-guarded": 1273.721, + "address-cache": 1378.065, + "python": 791.003 + }, + "wall_medians_ms": { + "aot": 9.335716, + "decoded": 9.532702, + "partial": 9.203524, + "guarded": 9.198626, + "copy-patch": 9.007466, + "copy-patch-guarded": 8.959359, + "address-cache": 9.208602, + "python": 26.705892 + }, + "paired_aot_speedups": { + "decoded": { + "median": 0.8687340113485469, + "minimum": 0.8254821870070754, + "maximum": 0.9016990761449568 + }, + "partial": { + "median": 0.987354217698089, + "minimum": 0.9331448634173455, + "maximum": 1.0155379473804258 + }, + "guarded": { + "median": 1.0403032506989014, + "minimum": 0.9925977434019491, + "maximum": 1.0850972385591824 + }, + "copy-patch": { + "median": 1.1265328168831632, + "minimum": 1.0316754012268334, + "maximum": 1.2172499181980134 + }, + "copy-patch-guarded": { + "median": 1.1717929111332326, + "minimum": 1.1139324155723318, + "maximum": 1.2389277634811469 + }, + "address-cache": { + "median": 1.0776692345041996, + "minimum": 1.046120215055723, + "maximum": 1.1816686604021063 + } + }, + "jit_medians_us": { + "copy-patch": 4.852, + "copy-patch-guarded": 4.707 + } + } +} diff --git a/bench/native/results/strategies/metadata.json b/bench/native/results/strategies/metadata.json new file mode 100644 index 00000000..3d3afb1f --- /dev/null +++ b/bench/native/results/strategies/metadata.json @@ -0,0 +1,249 @@ +{ + "cpu": 24, + "cpu_model": "Intel(R) Xeon(R) Gold 6418H", + "python": "3.10.12", + "compiler": "cc (Ubuntu 14.3.0-12ubuntu1~22~ppa2) 14.3.0", + "flags": [ + "-O3", + "-std=c11", + "-Wall", + "-Wextra", + "-Werror" + ], + "pairs": 9, + "warmups": 1, + "inputs": { + "iops": { + "kv_sha256": "360d3a2b7bd4d014255ba34cd86f6c72ee72a46b4787ed248ee5a6db96887dd7", + "python_sha256": "e53ef1d628cf1b39be8e2ee2e7ee04a9e0517403226e5f8f18ada9a44ce12d04", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\niops(n) -> r\n}\n", + "generated_c_sha256": "ef929eb7f7dea1fe901fcbac9fa5fc18af13919e96c57d129744caf3dd0e781b", + "scales": [ + 500, + 1000, + 2000, + 200000 + ], + "variants": { + "decoded": { + "instructions": 11, + "opcode_shapes": 7, + "jit_bytes": 0, + "compile_ns": 207369907, + "text_bytes": 11810, + "worker_sha256": "f2077e885b65a9cdb9b2f0dbf60d615b83615f63b9b8788804efd2a54e8634be", + "generated_c_sha256": "bbe29d3f5d141206e5ef1f3f0d010cad22c1db9a2e343d9fd8ada3e49d06c5b7" + }, + "partial": { + "instructions": 11, + "opcode_shapes": 7, + "jit_bytes": 0, + "compile_ns": 203253151, + "text_bytes": 10444, + "worker_sha256": "ea91c0183d83d667476ccacf06179d6f2a19ffb20623200376516a07a0a03c97", + "generated_c_sha256": "6a76ff44a5825f79c2e8f7464d97bbcbe857a462e5e22cb3555390d3835a10e4" + }, + "guarded": { + "instructions": 11, + "opcode_shapes": 7, + "jit_bytes": 0, + "compile_ns": 222731097, + "text_bytes": 10573, + "worker_sha256": "8ff77a1d37932076756f526a201455b324a8c6892028a867ae2f78670b36bc47", + "generated_c_sha256": "7b4e30dc9c54f65cc71ffeb0314481744736bd4c5310563674a15610eead2460" + }, + "copy-patch": { + "instructions": 11, + "opcode_shapes": 7, + "jit_bytes": 352, + "compile_ns": 266528976, + "text_bytes": 14919, + "worker_sha256": "28e6bc93e37d056eeb0f74772f428827a8d8cf6de624ef707bbbd6b776e83e46", + "generated_c_sha256": "2100d41f38806ae247ad044d750e7f5c4fcd25f1972cf4d676977e70e3aed1aa" + }, + "copy-patch-guarded": { + "instructions": 11, + "opcode_shapes": 7, + "jit_bytes": 352, + "compile_ns": 276503083, + "text_bytes": 15937, + "worker_sha256": "843a116a2377d3fac166bb6cb9fbdf53965d8922434c8108d6cc4abbd35c2fe9", + "generated_c_sha256": "e3a92602c9a573f8beb8831a449e0b65efda927094280d96734c91bba80eeee2" + }, + "address-cache": { + "instructions": 11, + "opcode_shapes": 7, + "jit_bytes": 0, + "compile_ns": 226627834, + "text_bytes": 11110, + "worker_sha256": "27769f9d5af968d3f162f5726fa46e7f4e98aa5bc7938ae137df414ed790045e", + "generated_c_sha256": "b0d073bf3c9e6823cc6c7f11cd759315dc0ec7b93fe19caeabe0010e30544ce4" + } + }, + "aot_sha256": "9a3fe6451d94d3cc2f8cb4e3c135c89d49efa41c7b9f9496bc9fc7aeec3a1360", + "aot_text_bytes": 10316 + }, + "fib": { + "kv_sha256": "f9f308e2939ecd712442586ee87b8340f55331e75bcd6a6c6ffc12aea3a7bab4", + "python_sha256": "63a329cd3bbc9271f9142f9fa762b3389c17525679763a14e21a7138e12987fa", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\nfib(n) -> r\n}\n", + "generated_c_sha256": "07b55ab8792de8104e5df323ebae83bbb64e6ce22c75c4d6fe9ca374146ccf95", + "scales": [ + 8, + 9, + 10, + 18 + ], + "variants": { + "decoded": { + "instructions": 14, + "opcode_shapes": 8, + "jit_bytes": 0, + "compile_ns": 225110862, + "text_bytes": 12236, + "worker_sha256": "8cc453ea2965135f716143076791937b57bae06cdc0245d9637270fa777d7dd9", + "generated_c_sha256": "4748d483196e20f4fc5876d9eac367719a2c29eb827f5173c554cf4df687215b" + }, + "partial": { + "instructions": 14, + "opcode_shapes": 8, + "jit_bytes": 0, + "compile_ns": 236340841, + "text_bytes": 10885, + "worker_sha256": "8528cf5e8e15969208ee32eaef80c7b28c4f1f508180013a342e0661f4090095", + "generated_c_sha256": "f593bcb8554b0d919c98dbbf2aab413799915786dd8b9c7c72cb2eef9d251a3c" + }, + "guarded": { + "instructions": 14, + "opcode_shapes": 8, + "jit_bytes": 0, + "compile_ns": 240116416, + "text_bytes": 10914, + "worker_sha256": "c7ee7494561ac85f7c83fc668a6c6626b1d73630f8a7c9f4e00d214e0402d326", + "generated_c_sha256": "6a0b2be65a92cda3e191c1be8515c864d0849a7899d5adc5290702c10dc57403" + }, + "copy-patch": { + "instructions": 14, + "opcode_shapes": 8, + "jit_bytes": 448, + "compile_ns": 282648743, + "text_bytes": 15267, + "worker_sha256": "dae54d06d240ca7f585efb8b0eb64ab1f39d8936cb454693b7b88f2f8393d11b", + "generated_c_sha256": "3a4799c12a1b44c46965ac7d756fa83e6f40cee5447fd7559c9c00a14ca75475" + }, + "copy-patch-guarded": { + "instructions": 14, + "opcode_shapes": 8, + "jit_bytes": 448, + "compile_ns": 305628205, + "text_bytes": 16585, + "worker_sha256": "403cf563bc8e5975af0f54a9278404aa613eb55f6b40d10db4f35d2ab88ba3e0", + "generated_c_sha256": "404ba66d4c87be0f5336612f4e47cdd9c42e688507f486edfb88ad485b1e7c32" + }, + "address-cache": { + "instructions": 14, + "opcode_shapes": 8, + "jit_bytes": 0, + "compile_ns": 254580565, + "text_bytes": 11380, + "worker_sha256": "6eda38fccd1bdb2ec148a691a670f9dc9ced4d3faf04d59082d167345bcd7ffb", + "generated_c_sha256": "6e3a044d9e4c5a67e381abf4e75f4e7f34b6a4ff67c7250e3fdddf3237c7b602" + } + }, + "aot_sha256": "1fbf2a34bc09aaab00fedb9746d502e9be8a12bc87f4e5119e41018fd7ada24a", + "aot_text_bytes": 10765 + }, + "nqueens": { + "kv_sha256": "e4ba6073d1cd9e76949e3b81b46604e28b97e712afd6f6158db811f7e97c169b", + "python_sha256": "61ebaeccf79bf06a85e213180930552748cca126ec60b8636a7ed7849765a8af", + "wrapper": "\nrwfunc bench_native(n:int64) -> (r:int64) {\n1 << n -> sh\nsh - 1 -> all\nnq(0, 0, 0, all) -> r\n}\n", + "generated_c_sha256": "0d3c595d6ba9f9df24fe1e13c52c551859609ae64ce3e7acd64d272848e421e0", + "scales": [ + 4, + 5, + 6, + 8 + ], + "variants": { + "decoded": { + "instructions": 30, + "opcode_shapes": 14, + "jit_bytes": 0, + "compile_ns": 311627375, + "text_bytes": 16913, + "worker_sha256": "ea9e929987b61d81aa5e045d052a9d24ac8deb02a0185235d446a53bdc8ba70c", + "generated_c_sha256": "4d416d8b4abbd2cb5ed01d63bb9c454fc41412a86b5d75d459aac97df7d0967e" + }, + "partial": { + "instructions": 30, + "opcode_shapes": 14, + "jit_bytes": 0, + "compile_ns": 379727595, + "text_bytes": 21013, + "worker_sha256": "b6e07cd2aa6828c4e2ef6d16dc32b1ad52185dea5c6d9223eef13b6f2f5552de", + "generated_c_sha256": "5de06104db0cf4fac5bc5789cb1c4454af0a7633e9c19bde57d769ee9151d9f0" + }, + "guarded": { + "instructions": 30, + "opcode_shapes": 14, + "jit_bytes": 0, + "compile_ns": 388763326, + "text_bytes": 20545, + "worker_sha256": "a4c1aee9b10a7e3958b1da80a5fc7e4c62f340abdf0c867a9910f244d48e14b5", + "generated_c_sha256": "185ea695370b734d0a20323cc4b8a8ba922d2e83cfa625180e24051c213c0aaf" + }, + "copy-patch": { + "instructions": 30, + "opcode_shapes": 14, + "jit_bytes": 960, + "compile_ns": 460059277, + "text_bytes": 24477, + "worker_sha256": "66e6c59f239d2d8d42e3ed6859bd031a7b438f2895aa26931d45ef0d42cec894", + "generated_c_sha256": "9ed245a37cb8918b3c4f300451d3cc3a03ed9db626bfada590a2d3b1c929a9d1" + }, + "copy-patch-guarded": { + "instructions": 30, + "opcode_shapes": 14, + "jit_bytes": 960, + "compile_ns": 491830678, + "text_bytes": 27523, + "worker_sha256": "162996df80b815c5f971e176a3e5edc257ac8531352e0c9d2339cba333e32924", + "generated_c_sha256": "00e16a3a7d445cec481d509853377ca6e89ed93f913b08ccdccc8ae6e4d5fcc5" + }, + "address-cache": { + "instructions": 30, + "opcode_shapes": 14, + "jit_bytes": 0, + "compile_ns": 403046227, + "text_bytes": 21515, + "worker_sha256": "425a118d1489718137d2991844cf6ec75cea0fae68c09b96fa552182d5052790", + "generated_c_sha256": "0cc7f8eb480257c0ea2030dde9f9c04354cf262d9eb368a16718caeaabb6a8ce" + } + }, + "aot_sha256": "ff84d32d14ee89a49a0928f21f3029a1599e3b03dc4a2cb436e9dc3dd15e3118", + "aot_text_bytes": 20157 + } + }, + "timing": "execute includes redo; JIT preparation separate; wall includes init and run; build timings are one observation", + "libraries": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "kvlang": { + "path": "/tmp/kvlang-perf-current/bin/kvlang", + "sha256": "931157271cc79507b6a33c0e9c3fc72013ceb65ff5520c046b887955bce49d7a" + }, + "loaded": { + "/tmp/kvspace-frontend-main-release/libkvspace.so.1": "f5abbbf1fe9493d56c11ecb428269f5b2f540c1d47d69b050e4e5e5743628f3f", + "/tmp/kvspace-c-perf-total-build/libkvspace-c.so.1": "6b143b678a0d1be7761401809b08c6d9093f9501ec261da3aaa2bcbd96b433c0" + }, + "samples": 864, + "equal_final_state_groups": 108, + "generator_sha256": { + "compile.py": "09b83220b66fc996658f46b72de307a2cc502e7e1f7d803956866e0d35c6bc68", + "strategies.py": "c073f1278285576f173aa1ca4a9a12a1f96ccc9adfff0f610f777d6e94f006f5", + "strategies.c.in": "471fe04023854f2e2e7d3f5466f0309a6b25870c9114b930226038315a982b81", + "worker.c.in": "c52890d0108cb1900bc534dc3567237e428a524314e70b16918e922cd3f6c385", + "run.py": "840ea3d9d879b3be393fd5fd9b3d14b52af84611112b5b7959cbfde0e7049070" + } +} diff --git a/bench/native/results/strategies/samples.csv b/bench/native/results/strategies/samples.csv new file mode 100644 index 00000000..96de50a2 --- /dev/null +++ b/bench/native/results/strategies/samples.csv @@ -0,0 +1,865 @@ +case,scale,pair,variant,kernel_ns,wall_ns,result,state_sha256,jit_ns +iops,500,0,aot,51141,7527344,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,decoded,64053,7703428,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,partial,57149,7726314,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,guarded,49706,7798637,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,copy-patch,55493,7506151,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,5556 +iops,500,0,copy-patch-guarded,52757,7456694,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4508 +iops,500,0,address-cache,47390,7627301,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,0,python,26412,26368202,500,,0 +iops,500,1,python,24229,25696637,500,,0 +iops,500,1,address-cache,46056,7914969,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,copy-patch-guarded,53269,7974526,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4629 +iops,500,1,copy-patch,54148,7466546,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4679 +iops,500,1,guarded,49353,8025300,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,partial,55981,7568984,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,decoded,63886,7726137,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,1,aot,51986,7734387,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,aot,56380,7731220,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,decoded,63833,7722227,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,partial,54799,7505027,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,guarded,49552,7662507,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,copy-patch,58770,7557874,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,5018 +iops,500,2,copy-patch-guarded,51224,7951695,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4786 +iops,500,2,address-cache,47408,7577583,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,2,python,25759,26027448,500,,0 +iops,500,3,python,25856,25811081,500,,0 +iops,500,3,address-cache,45474,7989075,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,copy-patch-guarded,50953,7522243,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4262 +iops,500,3,copy-patch,53239,7570597,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4574 +iops,500,3,guarded,48903,7377825,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,partial,58071,7615447,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,decoded,64122,7542339,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,3,aot,51584,7593086,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,aot,70224,7788255,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,decoded,66517,7700892,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,partial,56979,7590376,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,guarded,49008,7949837,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,copy-patch,54623,7744924,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,5081 +iops,500,4,copy-patch-guarded,51360,7684689,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4788 +iops,500,4,address-cache,63244,7431935,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,4,python,25935,26258485,500,,0 +iops,500,5,python,26037,25230949,500,,0 +iops,500,5,address-cache,47901,7905906,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,copy-patch-guarded,52087,7747924,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4925 +iops,500,5,copy-patch,53307,7519168,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4756 +iops,500,5,guarded,50238,7922046,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,partial,56174,7915743,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,decoded,66189,7673527,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,5,aot,52001,7446590,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,aot,48724,7612111,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,decoded,63170,7895969,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,partial,61559,7704595,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,guarded,49379,7365269,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,copy-patch,52164,7580559,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4795 +iops,500,6,copy-patch-guarded,53227,7675587,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4600 +iops,500,6,address-cache,48710,7518019,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,6,python,27328,26479242,500,,0 +iops,500,7,python,25877,25401752,500,,0 +iops,500,7,address-cache,46692,7575619,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,copy-patch-guarded,54852,7501228,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4824 +iops,500,7,copy-patch,62690,7502243,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4573 +iops,500,7,guarded,65340,7729145,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,partial,64591,7698290,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,decoded,63924,7324665,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,7,aot,54359,7625876,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,aot,52999,7729432,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,decoded,63848,7737977,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,partial,57965,7392989,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,guarded,50184,7476582,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,copy-patch,53089,7527831,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,4743 +iops,500,8,copy-patch-guarded,52609,8273175,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,5475 +iops,500,8,address-cache,51005,7591197,500,a64b7b46c7ec5825e7f128012d165feb244bb645a4df555e953f93ffeb8f7bb7,0 +iops,500,8,python,25687,26404991,500,,0 +iops,1000,0,aot,113635,7984612,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,decoded,127502,7659970,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,partial,104370,7775973,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,guarded,91682,7764809,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,copy-patch,98229,7895789,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,5058 +iops,1000,0,copy-patch-guarded,94070,8145214,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4466 +iops,1000,0,address-cache,88939,7624797,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,0,python,48599,26611426,1000,,0 +iops,1000,1,python,49606,25680032,1000,,0 +iops,1000,1,address-cache,90114,7835125,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,copy-patch-guarded,105703,7763028,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4440 +iops,1000,1,copy-patch,123461,7563815,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,6581 +iops,1000,1,guarded,93670,7504850,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,partial,104095,7743264,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,decoded,123324,7571557,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,1,aot,117257,7345206,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,aot,100345,7489479,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,decoded,123360,7581909,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,partial,110805,7794384,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,guarded,93782,7506749,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,copy-patch,99645,7721803,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4404 +iops,1000,2,copy-patch-guarded,147144,7831367,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4628 +iops,1000,2,address-cache,93496,7470492,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,2,python,49395,26585248,1000,,0 +iops,1000,3,python,46822,25171189,1000,,0 +iops,1000,3,address-cache,88067,7499204,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,copy-patch-guarded,95241,7363547,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,5390 +iops,1000,3,copy-patch,99007,7383811,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4959 +iops,1000,3,guarded,95172,8155746,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,partial,111028,7445306,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,decoded,127261,7541100,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,3,aot,97861,7573890,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,aot,98232,7663674,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,decoded,123692,7665604,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,partial,113778,7473384,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,guarded,92311,7791923,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,copy-patch,107131,7736851,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,8577 +iops,1000,4,copy-patch-guarded,94726,7301389,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4624 +iops,1000,4,address-cache,91176,7332140,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,4,python,48540,26262317,1000,,0 +iops,1000,5,python,48903,25234332,1000,,0 +iops,1000,5,address-cache,89330,7645382,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,copy-patch-guarded,97555,7494507,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,5550 +iops,1000,5,copy-patch,103024,7363172,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4803 +iops,1000,5,guarded,90429,7413976,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,partial,114028,7582261,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,decoded,123018,7481670,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,5,aot,96559,7420990,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,aot,100495,7721684,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,decoded,123232,7701715,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,partial,110024,8029354,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,guarded,110452,7975173,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,copy-patch,107184,7695149,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4791 +iops,1000,6,copy-patch-guarded,99855,7647672,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4785 +iops,1000,6,address-cache,96742,7617875,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,6,python,48536,26516740,1000,,0 +iops,1000,7,python,48480,25597044,1000,,0 +iops,1000,7,address-cache,86125,7862757,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,copy-patch-guarded,96138,7684138,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,5227 +iops,1000,7,copy-patch,104137,8184242,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,5091 +iops,1000,7,guarded,97414,7611463,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,partial,104406,7630691,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,decoded,128010,7401788,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,7,aot,96674,7629492,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,aot,104694,7768886,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,decoded,127648,7691830,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,partial,117179,7464649,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,guarded,92519,7470672,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,copy-patch,96823,7507747,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4490 +iops,1000,8,copy-patch-guarded,110523,8089939,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,4630 +iops,1000,8,address-cache,97656,7439514,1000,d57fe0c59c6a37b321006043ad7394308b730285e48264b53f5fa78731471d58,0 +iops,1000,8,python,48445,26698818,1000,,0 +iops,2000,0,aot,190855,8297871,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,decoded,248007,7720428,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,partial,202987,8007476,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,guarded,180121,7700558,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,copy-patch,208007,7782156,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4996 +iops,2000,0,copy-patch-guarded,186920,7874725,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4816 +iops,2000,0,address-cache,170202,7746156,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,0,python,95436,26578246,2000,,0 +iops,2000,1,python,96479,25333015,2000,,0 +iops,2000,1,address-cache,173290,7696949,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,copy-patch-guarded,187569,7778806,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4624 +iops,2000,1,copy-patch,212452,7646589,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,6742 +iops,2000,1,guarded,177517,7462047,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,partial,223470,7776249,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,decoded,240763,7759956,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,1,aot,194907,7687782,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,aot,194873,8210673,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,decoded,252766,7870467,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,partial,230108,7915444,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,guarded,182545,7882148,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,copy-patch,205109,8000660,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,7124 +iops,2000,2,copy-patch-guarded,190750,7757440,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4869 +iops,2000,2,address-cache,174291,7565817,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,2,python,94362,26448429,2000,,0 +iops,2000,3,python,100526,25554561,2000,,0 +iops,2000,3,address-cache,184568,7556887,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,copy-patch-guarded,192674,7704163,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4536 +iops,2000,3,copy-patch,193196,7685989,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4353 +iops,2000,3,guarded,192478,7909288,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,partial,219846,7836403,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,decoded,240413,7757509,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,3,aot,256954,7820380,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,aot,189316,8305294,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,decoded,245682,7837454,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,partial,216777,8475365,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,guarded,177495,7807351,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,copy-patch,205739,8058857,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4916 +iops,2000,4,copy-patch-guarded,186774,7983735,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4844 +iops,2000,4,address-cache,187411,7769979,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,4,python,95057,27102604,2000,,0 +iops,2000,5,python,94417,26115306,2000,,0 +iops,2000,5,address-cache,170569,8258809,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,copy-patch-guarded,197901,7787748,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4786 +iops,2000,5,copy-patch,192126,8042668,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4654 +iops,2000,5,guarded,181613,7846353,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,partial,214985,7812563,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,decoded,245305,7774661,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,5,aot,191340,7991753,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,aot,193192,8169009,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,decoded,241491,7810361,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,partial,208108,8398527,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,guarded,187572,8100399,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,copy-patch,198376,8076103,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,5927 +iops,2000,6,copy-patch-guarded,189913,7972836,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4938 +iops,2000,6,address-cache,172641,8094663,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,6,python,94440,26998019,2000,,0 +iops,2000,7,python,96639,26342699,2000,,0 +iops,2000,7,address-cache,172225,8197242,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,copy-patch-guarded,184110,7980451,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,5354 +iops,2000,7,copy-patch,201420,7923210,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4503 +iops,2000,7,guarded,187913,7936889,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,partial,211308,8264645,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,decoded,240722,8167247,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,7,aot,185383,8217239,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,aot,183637,7757529,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,decoded,257645,8289684,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,partial,227275,8012893,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,guarded,184996,7838756,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,copy-patch,206090,7726762,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,4886 +iops,2000,8,copy-patch-guarded,203537,7620436,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,5246 +iops,2000,8,address-cache,176783,7680541,2000,917c0d1d4b02ba1dbf674658c9805257f57d8aea1fe33b2621172d6b8cc4c4f2,0 +iops,2000,8,python,94938,26805823,2000,,0 +iops,200000,0,aot,18162135,26156630,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,decoded,21633913,29242588,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,partial,20794369,28644734,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,guarded,16452387,23918655,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,copy-patch,18127363,25805071,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4538 +iops,200000,0,copy-patch-guarded,17179321,24869006,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,5039 +iops,200000,0,address-cache,16510243,23804894,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,0,python,8838111,35505505,200000,,0 +iops,200000,1,python,8965087,34267289,200000,,0 +iops,200000,1,address-cache,16417483,24416927,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,copy-patch-guarded,17174796,24731253,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4612 +iops,200000,1,copy-patch,17643342,25438531,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4752 +iops,200000,1,guarded,16163984,24105594,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,partial,21052269,28910828,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,decoded,22654243,30675075,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,1,aot,17221089,25136873,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,aot,18501107,26070077,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,decoded,22498984,29770108,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,partial,21012513,28643828,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,guarded,16053337,23708809,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,copy-patch,19490492,26754500,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,5584 +iops,200000,2,copy-patch-guarded,17955992,25722739,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,5084 +iops,200000,2,address-cache,16497632,24059294,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,2,python,8903252,35305214,200000,,0 +iops,200000,3,python,8958806,34516376,200000,,0 +iops,200000,3,address-cache,16519542,24500858,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,copy-patch-guarded,16798431,24626057,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4516 +iops,200000,3,copy-patch,19494747,26909675,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,6058 +iops,200000,3,guarded,16969109,25207022,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,partial,20945871,28748114,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,decoded,22969284,31541697,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,3,aot,17833929,25644227,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,aot,18370672,26068820,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,decoded,21601608,29336692,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,partial,20330040,28349770,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,guarded,17329754,25397702,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,copy-patch,18126021,26007748,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4474 +iops,200000,4,copy-patch-guarded,17904110,25962307,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,5298 +iops,200000,4,address-cache,15302697,22837862,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,4,python,8174402,34413005,200000,,0 +iops,200000,5,python,8794145,33848933,200000,,0 +iops,200000,5,address-cache,17121482,24991223,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,copy-patch-guarded,18603901,26665073,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4566 +iops,200000,5,copy-patch,17901107,25757079,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4745 +iops,200000,5,guarded,16200611,23914852,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,partial,19862233,27424109,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,decoded,23894167,31546807,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,5,aot,17570022,25475991,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,aot,17056380,25035177,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,decoded,23396333,31031812,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,partial,21218536,29480239,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,guarded,17447053,25244085,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,copy-patch,18634073,26251257,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4682 +iops,200000,6,copy-patch-guarded,17483228,25288196,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4942 +iops,200000,6,address-cache,17671031,25288895,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,6,python,8742124,35046420,200000,,0 +iops,200000,7,python,9975162,34937348,200000,,0 +iops,200000,7,address-cache,16178078,24299369,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,copy-patch-guarded,17324580,25005289,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4600 +iops,200000,7,copy-patch,19468784,26992363,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4871 +iops,200000,7,guarded,16878782,24839628,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,partial,21302676,28986836,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,decoded,22663596,30517745,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,7,aot,18773102,26499544,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,aot,17812484,25669002,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,decoded,22849416,30586502,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,partial,20069129,27582624,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,guarded,16533000,24552152,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,copy-patch,18733937,26811265,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,4725 +iops,200000,8,copy-patch-guarded,18500372,26072103,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,5161 +iops,200000,8,address-cache,17197886,24556266,200000,cc4caa306c90dca4ddc497d4e89f14c4f50241563a3cd2febd9695671e65422b,0 +iops,200000,8,python,9102466,35389649,200000,,0 +fib,8,0,aot,24927,7787788,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,decoded,18994,8111259,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,partial,17395,7576590,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,guarded,17558,7790300,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,copy-patch,18381,7567524,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,5017 +fib,8,0,copy-patch-guarded,18242,7935122,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4701 +fib,8,0,address-cache,17762,7583496,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,0,python,10748,26309187,21,,0 +fib,8,1,python,10915,25959711,21,,0 +fib,8,1,address-cache,17155,8160983,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,copy-patch-guarded,17676,7442277,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4905 +fib,8,1,copy-patch,17858,7647951,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4510 +fib,8,1,guarded,18382,7757960,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,partial,17934,8599039,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,decoded,20174,7859716,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,1,aot,17283,7769994,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,aot,18314,7554325,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,decoded,19883,7717805,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,partial,17551,7631334,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,guarded,18571,7487153,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,copy-patch,18508,7962817,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4749 +fib,8,2,copy-patch-guarded,18090,7553772,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4922 +fib,8,2,address-cache,17678,7529654,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,2,python,10580,26476123,21,,0 +fib,8,3,python,9881,25464664,21,,0 +fib,8,3,address-cache,17930,8296953,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,copy-patch-guarded,17909,7974952,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4673 +fib,8,3,copy-patch,18271,7658064,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4418 +fib,8,3,guarded,17864,7349485,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,partial,17559,7741516,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,decoded,23500,7585948,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,3,aot,17238,7708697,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,aot,17801,8164930,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,decoded,20862,7729074,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,partial,17777,8316629,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,guarded,18057,8222663,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,copy-patch,17483,7581637,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4322 +fib,8,4,copy-patch-guarded,17995,7531469,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4586 +fib,8,4,address-cache,17353,7797265,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,4,python,9460,25784746,21,,0 +fib,8,5,python,9249,24870138,21,,0 +fib,8,5,address-cache,17116,7728638,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,copy-patch-guarded,18006,7449014,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4380 +fib,8,5,copy-patch,18443,7654348,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4487 +fib,8,5,guarded,17607,7630210,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,partial,17371,7635792,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,decoded,19723,8498996,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,5,aot,17891,8017312,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,aot,17628,7814561,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,decoded,19183,7930747,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,partial,18131,7479542,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,guarded,18636,8061052,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,copy-patch,18164,8010935,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4848 +fib,8,6,copy-patch-guarded,18167,7826451,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4961 +fib,8,6,address-cache,18387,7709799,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,6,python,10502,26607856,21,,0 +fib,8,7,python,10435,25528035,21,,0 +fib,8,7,address-cache,17401,7894319,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,copy-patch-guarded,24168,7621502,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,6405 +fib,8,7,copy-patch,22243,7475272,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4981 +fib,8,7,guarded,18105,7851185,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,partial,17505,7867277,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,decoded,20272,7599957,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,7,aot,17107,7824158,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,aot,17804,7900027,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,decoded,20078,7704386,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,partial,19056,7727608,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,guarded,18941,7689966,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,copy-patch,17725,8225381,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4464 +fib,8,8,copy-patch-guarded,18124,7756380,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,4917 +fib,8,8,address-cache,17756,8046200,21,e81752a3616d6ff8e2e013d381024ece75c459fa1b095b9ef25af1a53738e82a,0 +fib,8,8,python,10182,26509654,21,,0 +fib,9,0,aot,23975,8187628,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,decoded,28643,7732434,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,partial,25081,8045255,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,guarded,25501,7712208,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,copy-patch,24959,7884177,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4701 +fib,9,0,copy-patch-guarded,25911,7848667,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4511 +fib,9,0,address-cache,24125,7971779,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,0,python,14564,26559088,34,,0 +fib,9,1,python,14095,24965972,34,,0 +fib,9,1,address-cache,25007,7992154,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,copy-patch-guarded,24789,7745999,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4625 +fib,9,1,copy-patch,25150,7663223,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4899 +fib,9,1,guarded,34095,8309195,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,partial,25531,8220650,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,decoded,29217,7707557,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,1,aot,24651,7777804,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,aot,24783,8113176,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,decoded,28126,8083592,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,partial,25066,7646071,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,guarded,26824,7750565,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,copy-patch,24909,7909883,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,5307 +fib,9,2,copy-patch-guarded,24815,8001192,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,7299 +fib,9,2,address-cache,24799,7786956,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,2,python,15670,27059681,34,,0 +fib,9,3,python,14799,25950329,34,,0 +fib,9,3,address-cache,24707,8295662,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,copy-patch-guarded,24662,7568641,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4851 +fib,9,3,copy-patch,24319,8098699,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4551 +fib,9,3,guarded,26898,7723562,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,partial,25698,7472352,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,decoded,28970,7980070,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,3,aot,24657,7990380,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,aot,23869,7819045,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,decoded,40240,7914073,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,partial,25057,7722027,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,guarded,24625,7650788,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,copy-patch,24604,7646863,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4830 +fib,9,4,copy-patch-guarded,25555,7914350,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4369 +fib,9,4,address-cache,29932,7923898,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,4,python,15478,26497392,34,,0 +fib,9,5,python,14889,25724887,34,,0 +fib,9,5,address-cache,29583,7943370,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,copy-patch-guarded,25086,7453671,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4537 +fib,9,5,copy-patch,25097,7532227,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4426 +fib,9,5,guarded,25203,7329566,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,partial,25077,7427084,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,decoded,40442,7746877,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,5,aot,26632,7562759,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,aot,24960,7752674,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,decoded,27548,7716647,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,partial,25314,7599983,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,guarded,25625,7459261,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,copy-patch,25466,7493881,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4669 +fib,9,6,copy-patch-guarded,24367,7449972,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4995 +fib,9,6,address-cache,24529,7411403,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,6,python,14672,26190020,34,,0 +fib,9,7,python,14764,26118259,34,,0 +fib,9,7,address-cache,25289,9010351,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,copy-patch-guarded,24839,8041402,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4894 +fib,9,7,copy-patch,24640,8075531,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,5149 +fib,9,7,guarded,26712,8652974,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,partial,25482,8352003,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,decoded,27820,8502352,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,7,aot,25151,8117255,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,aot,25708,8150820,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,decoded,29034,8128866,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,partial,25084,8081529,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,guarded,25882,8007368,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,copy-patch,24448,8164763,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,5153 +fib,9,8,copy-patch-guarded,31206,8191707,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,4724 +fib,9,8,address-cache,24898,7906099,34,6370c499d578c417a3ff7a4e873ce1a6de31c50dec87a6c3f2109dda8864e455,0 +fib,9,8,python,15212,27125457,34,,0 +fib,10,0,aot,36880,8682627,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,decoded,42566,8025922,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,partial,37091,8200841,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,guarded,35935,7730895,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,copy-patch,36773,8053461,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4648 +fib,10,0,copy-patch-guarded,36657,7847480,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4525 +fib,10,0,address-cache,37386,8118902,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,0,python,19251,26279166,55,,0 +fib,10,1,python,18774,25779701,55,,0 +fib,10,1,address-cache,36123,7814006,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,copy-patch-guarded,35938,7834719,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,5689 +fib,10,1,copy-patch,37045,7454378,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4634 +fib,10,1,guarded,40233,7632858,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,partial,36877,7893240,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,decoded,42732,7674326,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,1,aot,36866,7998960,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,aot,35135,7798033,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,decoded,40746,7887430,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,partial,37004,7667552,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,guarded,50037,7745105,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,copy-patch,35706,7766699,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4912 +fib,10,2,copy-patch-guarded,35376,7380589,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,5521 +fib,10,2,address-cache,36394,7624804,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,2,python,18635,26132394,55,,0 +fib,10,3,python,19892,25137186,55,,0 +fib,10,3,address-cache,35909,7478593,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,copy-patch-guarded,35477,7566267,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4706 +fib,10,3,copy-patch,35962,7660318,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4785 +fib,10,3,guarded,51154,7624921,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,partial,38539,7496431,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,decoded,43050,7965962,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,3,aot,40863,7690734,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,aot,36451,7802450,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,decoded,44168,7821897,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,partial,37757,7610564,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,guarded,39070,7571527,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,copy-patch,35899,8133129,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,5340 +fib,10,4,copy-patch-guarded,35782,7745940,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,5885 +fib,10,4,address-cache,89025,7755320,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,4,python,21068,26539432,55,,0 +fib,10,5,python,18570,25050986,55,,0 +fib,10,5,address-cache,36246,8276632,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,copy-patch-guarded,36093,7933370,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4649 +fib,10,5,copy-patch,35100,8091333,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4607 +fib,10,5,guarded,40756,8038456,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,partial,37198,7599760,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,decoded,42540,7611974,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,5,aot,39207,7396855,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,aot,35732,7570942,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,decoded,43862,7789066,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,partial,38307,7656864,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,guarded,37343,7582671,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,copy-patch,36043,7985965,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,5000 +fib,10,6,copy-patch-guarded,36524,7650270,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4992 +fib,10,6,address-cache,37335,7517012,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,6,python,19707,26473829,55,,0 +fib,10,7,python,17607,25222859,55,,0 +fib,10,7,address-cache,36236,7615490,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,copy-patch-guarded,34957,7619974,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4651 +fib,10,7,copy-patch,35631,7777207,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4756 +fib,10,7,guarded,39512,7619293,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,partial,37572,7630757,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,decoded,42161,7574619,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,7,aot,35456,7620210,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,aot,35975,7650786,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,decoded,43097,7497234,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,partial,37667,7479173,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,guarded,38808,7648389,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,copy-patch,36428,7627877,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,5155 +fib,10,8,copy-patch-guarded,36007,7603184,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,4691 +fib,10,8,address-cache,36335,7977756,55,f681ccd24cca88cdc40a5d94f5ce3ce190a7d588399112fdbcf7e9b35f837409,0 +fib,10,8,python,19168,26795027,55,,0 +fib,18,0,aot,1427003,9213228,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,decoded,1696425,9312289,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,partial,1484412,9075266,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,guarded,1526520,8985723,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,copy-patch,1340740,8947935,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4767 +fib,18,0,copy-patch-guarded,1349109,8875065,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4752 +fib,18,0,address-cache,1466888,9304717,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,0,python,513705,26976537,2584,,0 +fib,18,1,python,514107,25809535,2584,,0 +fib,18,1,address-cache,1458114,9162385,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,copy-patch-guarded,1321593,8928462,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4889 +fib,18,1,copy-patch,1377546,8967188,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4992 +fib,18,1,guarded,1524750,8955280,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,partial,1479057,9532889,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,decoded,1724220,9602426,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,1,aot,1450564,9112029,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,aot,1387904,9045005,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,decoded,1743290,9778391,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,partial,1534835,9278757,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,guarded,1548368,9275652,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,copy-patch,1370730,9182002,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4477 +fib,18,2,copy-patch-guarded,1332599,8915451,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4827 +fib,18,2,address-cache,1474023,9141796,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,2,python,522995,27338776,2584,,0 +fib,18,3,python,508583,26425306,2584,,0 +fib,18,3,address-cache,1482969,9094583,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,copy-patch-guarded,1437563,8903828,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4744 +fib,18,3,copy-patch,1361025,9045301,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,5814 +fib,18,3,guarded,1532498,9132783,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,partial,1522896,9428516,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,decoded,1706615,9737173,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,3,aot,1463848,8983995,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,aot,1474718,9161707,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,decoded,1607639,9158716,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,partial,1466936,9231728,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,guarded,1478858,8915355,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,copy-patch,1356295,8965606,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4854 +fib,18,4,copy-patch-guarded,1325266,9071038,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4782 +fib,18,4,address-cache,1516610,9080268,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,4,python,521209,27502390,2584,,0 +fib,18,5,python,503997,26306490,2584,,0 +fib,18,5,address-cache,1554266,9291034,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,copy-patch-guarded,1398486,9067510,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4459 +fib,18,5,copy-patch,1317518,8825752,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4906 +fib,18,5,guarded,1409123,8902524,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,partial,1523807,9059581,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,decoded,1714470,9333327,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,5,aot,1486244,9197556,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,aot,1401854,9233073,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,decoded,1703371,9456738,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,partial,1525280,9102126,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,guarded,1461199,8930217,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,copy-patch,1358149,9039691,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,5157 +fib,18,6,copy-patch-guarded,1352246,8992380,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4862 +fib,18,6,address-cache,1470500,9282433,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,6,python,521738,26851208,2584,,0 +fib,18,7,python,513928,26442015,2584,,0 +fib,18,7,address-cache,1464709,9435652,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,copy-patch-guarded,1369792,9124128,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4771 +fib,18,7,copy-patch,1346886,8948072,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4560 +fib,18,7,guarded,1461152,9196686,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,partial,1475542,8970967,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,decoded,1684738,9591008,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,7,aot,1403469,9287859,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,aot,1407163,8983169,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,decoded,1695911,9752507,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,partial,1513618,9023517,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,guarded,1476218,9262418,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,copy-patch,1379245,8958981,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4948 +fib,18,8,copy-patch-guarded,1321292,8966626,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,4793 +fib,18,8,address-cache,1455967,9109767,2584,771156804e3d9c5eb93fe094689e7ed3978dda0d221b9539f118ee1e14d3f6dd,0 +fib,18,8,python,511803,26663494,2584,,0 +nqueens,4,0,aot,20337,7983957,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,decoded,21957,9708684,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,partial,20343,7898441,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,guarded,20104,7647976,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,copy-patch,22222,7733973,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5417 +nqueens,4,0,copy-patch-guarded,19440,7780665,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4913 +nqueens,4,0,address-cache,27553,7786380,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,0,python,20208,26213553,2,,0 +nqueens,4,1,python,20975,25576259,2,,0 +nqueens,4,1,address-cache,17139,7721296,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,copy-patch-guarded,21037,8098872,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4694 +nqueens,4,1,copy-patch,21797,7842251,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4734 +nqueens,4,1,guarded,19964,7613601,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,partial,20020,8154144,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,decoded,21002,7938271,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,1,aot,20581,7949551,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,aot,19706,7843683,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,decoded,28282,8027916,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,partial,19549,7740616,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,guarded,20218,7569461,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,copy-patch,21236,7814703,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4608 +nqueens,4,2,copy-patch-guarded,20873,7594511,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5065 +nqueens,4,2,address-cache,18569,7621245,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,2,python,19944,26342494,2,,0 +nqueens,4,3,python,19618,25349762,2,,0 +nqueens,4,3,address-cache,19012,7536766,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,copy-patch-guarded,22199,7830715,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4772 +nqueens,4,3,copy-patch,21389,7652203,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5051 +nqueens,4,3,guarded,25456,7972209,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,partial,19851,7941297,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,decoded,27817,8083449,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,3,aot,20840,7778688,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,aot,19828,8002805,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,decoded,20981,7566320,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,partial,19646,8211639,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,guarded,19088,8338272,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,copy-patch,21070,8049085,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4919 +nqueens,4,4,copy-patch-guarded,22429,7878465,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4948 +nqueens,4,4,address-cache,19587,7946375,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,4,python,21588,26856152,2,,0 +nqueens,4,5,python,19878,25765897,2,,0 +nqueens,4,5,address-cache,18621,8042994,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,copy-patch-guarded,42236,7584632,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5082 +nqueens,4,5,copy-patch,22240,7887656,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5082 +nqueens,4,5,guarded,21018,8411611,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,partial,19691,7988986,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,decoded,21638,7985756,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,5,aot,20923,8023780,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,aot,20774,7847297,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,decoded,21797,7842654,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,partial,19647,7622062,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,guarded,20155,8418652,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,copy-patch,21184,7817580,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5037 +nqueens,4,6,copy-patch-guarded,23672,7859277,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4825 +nqueens,4,6,address-cache,19359,7694329,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,6,python,21380,26561939,2,,0 +nqueens,4,7,python,20330,25302110,2,,0 +nqueens,4,7,address-cache,27461,7962977,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,copy-patch-guarded,20995,7728518,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5672 +nqueens,4,7,copy-patch,21274,7680894,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4927 +nqueens,4,7,guarded,19379,7753022,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,partial,21180,7782268,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,decoded,21493,7948847,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,7,aot,19934,8199221,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,aot,20272,7996438,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,decoded,20980,7840056,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,partial,19615,7990717,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,guarded,20083,8047845,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,copy-patch,21385,7789632,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,5679 +nqueens,4,8,copy-patch-guarded,21505,7991766,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,4959 +nqueens,4,8,address-cache,19702,7656852,2,18d63299b9d24c37220de7deaa148d5174694d1aaaaa59f83bb8576c6ad0c309,0 +nqueens,4,8,python,41881,26697489,2,,0 +nqueens,5,0,aot,45369,7655707,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,decoded,50170,7780675,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,partial,44351,7762050,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,guarded,42892,7735006,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,copy-patch,43596,7770746,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5293 +nqueens,5,0,copy-patch-guarded,42266,7863821,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4857 +nqueens,5,0,address-cache,42547,7771477,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,0,python,36342,26505706,10,,0 +nqueens,5,1,python,35736,25721393,10,,0 +nqueens,5,1,address-cache,41749,7677220,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,copy-patch-guarded,41400,7977974,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4843 +nqueens,5,1,copy-patch,42585,7750376,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4780 +nqueens,5,1,guarded,98698,7757866,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,partial,44862,7804900,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,decoded,48134,7993794,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,1,aot,51989,8088397,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,aot,44336,7900844,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,decoded,49449,7748294,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,partial,44052,7810018,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,guarded,42841,7678769,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,copy-patch,42715,7795555,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5280 +nqueens,5,2,copy-patch-guarded,41657,7761583,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4553 +nqueens,5,2,address-cache,41209,7804629,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,2,python,36534,26496072,10,,0 +nqueens,5,3,python,35877,25893342,10,,0 +nqueens,5,3,address-cache,41798,7951222,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,copy-patch-guarded,41577,7968667,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4638 +nqueens,5,3,copy-patch,42135,7758779,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4481 +nqueens,5,3,guarded,42225,7836159,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,partial,43337,8187739,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,decoded,50461,7894373,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,3,aot,45160,7720950,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,aot,44095,7696284,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,decoded,53062,7691451,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,partial,43230,7574330,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,guarded,42189,7530149,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,copy-patch,42374,7663827,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4443 +nqueens,5,4,copy-patch-guarded,42588,7874936,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4878 +nqueens,5,4,address-cache,40215,7790507,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,4,python,36270,26185784,10,,0 +nqueens,5,5,python,36366,25711104,10,,0 +nqueens,5,5,address-cache,42350,8129081,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,copy-patch-guarded,41693,7642455,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5864 +nqueens,5,5,copy-patch,43033,7605281,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5062 +nqueens,5,5,guarded,43506,8165746,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,partial,45802,8262953,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,decoded,49257,8128313,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,5,aot,46392,7816538,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,aot,46269,7974756,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,decoded,48779,7606183,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,partial,43779,7700499,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,guarded,43882,8229693,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,copy-patch,42927,7985014,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4792 +nqueens,5,6,copy-patch-guarded,42797,7599162,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5087 +nqueens,5,6,address-cache,41933,7757988,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,6,python,39799,26495437,10,,0 +nqueens,5,7,python,36352,25219820,10,,0 +nqueens,5,7,address-cache,41762,7666189,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,copy-patch-guarded,41049,8080663,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,4508 +nqueens,5,7,copy-patch,43479,8054674,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5234 +nqueens,5,7,guarded,43832,7935710,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,partial,45245,7799922,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,decoded,50048,7746984,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,7,aot,45983,7875865,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,aot,45343,7959047,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,decoded,50747,7878367,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,partial,45132,8101642,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,guarded,42364,8135386,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,copy-patch,48331,7795595,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5208 +nqueens,5,8,copy-patch-guarded,42000,7692583,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,5027 +nqueens,5,8,address-cache,41861,7753056,10,f9b44b9e83341c932d5bceee6ea85aae690bee3929e786252c4a5e08e9134b5a,0 +nqueens,5,8,python,37865,26578979,10,,0 +nqueens,6,0,aot,114870,7965690,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,decoded,132859,7702110,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,partial,114817,7677976,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,guarded,111446,7631775,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,copy-patch,114564,7736366,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4867 +nqueens,6,0,copy-patch-guarded,112454,7803407,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,6748 +nqueens,6,0,address-cache,107873,7845140,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,0,python,83715,26628520,4,,0 +nqueens,6,1,python,77771,25721107,4,,0 +nqueens,6,1,address-cache,105463,7719786,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,copy-patch-guarded,103925,7798407,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4622 +nqueens,6,1,copy-patch,105987,7446000,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4514 +nqueens,6,1,guarded,111995,7534686,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,partial,115595,7867713,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,decoded,133328,7588488,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,1,aot,116064,7712324,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,aot,128137,8016214,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,decoded,134389,7927107,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,partial,114447,7899367,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,guarded,110339,7875472,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,copy-patch,107874,7622745,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,5834 +nqueens,6,2,copy-patch-guarded,102996,7854062,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,5047 +nqueens,6,2,address-cache,104656,7873447,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,2,python,79134,26773110,4,,0 +nqueens,6,3,python,77505,25644843,4,,0 +nqueens,6,3,address-cache,114908,7919792,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,copy-patch-guarded,104678,7609170,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,5125 +nqueens,6,3,copy-patch,115298,7878807,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,6338 +nqueens,6,3,guarded,110566,7679365,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,partial,115865,7904376,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,decoded,131210,8137044,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,3,aot,119026,7963852,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,aot,116501,7902601,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,decoded,131337,8047423,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,partial,116952,7691070,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,guarded,111302,7955973,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,copy-patch,106676,7797261,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,5845 +nqueens,6,4,copy-patch-guarded,109734,7755067,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,5029 +nqueens,6,4,address-cache,113985,7963969,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,4,python,79402,26597549,4,,0 +nqueens,6,5,python,80026,25428819,4,,0 +nqueens,6,5,address-cache,109607,8071159,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,copy-patch-guarded,102855,7845837,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4278 +nqueens,6,5,copy-patch,106545,7487708,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4680 +nqueens,6,5,guarded,110561,7937277,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,partial,129531,8026464,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,decoded,133563,8105031,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,5,aot,117306,7915211,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,aot,119136,7850862,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,decoded,131146,7746325,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,partial,117601,7716089,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,guarded,112821,7673097,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,copy-patch,106548,7695301,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4853 +nqueens,6,6,copy-patch-guarded,101175,7859117,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4511 +nqueens,6,6,address-cache,110699,7898714,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,6,python,80790,26803666,4,,0 +nqueens,6,7,python,103232,28514511,4,,0 +nqueens,6,7,address-cache,110881,8087823,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,copy-patch-guarded,101153,7946054,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,5333 +nqueens,6,7,copy-patch,108447,7805784,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4492 +nqueens,6,7,guarded,110398,7904356,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,partial,114584,7839237,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,decoded,133555,7815694,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,7,aot,118193,8134035,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,aot,115979,8376188,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,decoded,129184,8015315,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,partial,115842,7891737,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,guarded,111779,7995202,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,copy-patch,105680,7647116,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4884 +nqueens,6,8,copy-patch-guarded,104080,7704712,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,4560 +nqueens,6,8,address-cache,104088,7766115,4,7e1ab965e3ade15f9e4a5e58969a9292746c32155ad9901ca0f972421d945427,0 +nqueens,6,8,python,78890,26520940,4,,0 +nqueens,8,0,aot,1492597,9282035,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,decoded,1670861,9089328,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,partial,1485123,9089188,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,guarded,1500070,8904811,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,copy-patch,1332959,8883878,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4793 +nqueens,8,0,copy-patch-guarded,1273772,8959359,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4711 +nqueens,8,0,address-cache,1426793,8967169,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,0,python,798464,26906292,92,,0 +nqueens,8,1,python,791003,26197183,92,,0 +nqueens,8,1,address-cache,1378065,9487101,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,copy-patch-guarded,1324092,8771328,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4303 +nqueens,8,1,copy-patch,1378219,8999336,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4779 +nqueens,8,1,guarded,1375710,8845960,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,partial,1551393,9082013,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,decoded,1738147,9659139,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,1,aot,1474949,9109678,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,aot,1487065,9313028,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,decoded,1711761,9241651,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,partial,1523178,9187828,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,guarded,1370444,8869798,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,copy-patch,1320037,8840249,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4852 +nqueens,8,2,copy-patch-guarded,1313397,8685019,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4659 +nqueens,8,2,address-cache,1379890,8737893,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,2,python,794350,26881148,92,,0 +nqueens,8,3,python,795411,26705892,92,,0 +nqueens,8,3,address-cache,1393581,9380146,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,copy-patch-guarded,1273721,8865788,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,5733 +nqueens,8,3,copy-patch,1316342,9088896,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4938 +nqueens,8,3,guarded,1420358,9198626,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,partial,1531736,9411370,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,decoded,1708153,9944792,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,3,aot,1512366,9335716,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,aot,1529045,9728213,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,decoded,1697085,9532702,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,partial,1559235,9319743,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,guarded,1469807,9351219,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,copy-patch,1309111,9007466,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4819 +nqueens,8,4,copy-patch-guarded,1234168,9148706,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4707 +nqueens,8,4,address-cache,1371260,9208602,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,4,python,796752,27026869,92,,0 +nqueens,8,5,python,763381,26620121,92,,0 +nqueens,8,5,address-cache,1377427,9509559,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,copy-patch-guarded,1269358,8899231,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4672 +nqueens,8,5,copy-patch,1361620,9011144,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4620 +nqueens,8,5,guarded,1422366,9021126,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,partial,1523537,9516573,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,decoded,1776277,9598180,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,5,aot,1506695,9603142,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,aot,1420323,9187108,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,decoded,1720598,10174402,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,partial,1522082,9203524,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,guarded,1430915,9304318,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,copy-patch,1376715,9614073,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,5177 +nqueens,8,6,copy-patch-guarded,1247810,9059532,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4844 +nqueens,8,6,address-cache,1319806,8597386,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,6,python,785800,26831092,92,,0 +nqueens,8,7,python,779110,26597229,92,,0 +nqueens,8,7,address-cache,1408422,9277873,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,copy-patch-guarded,1289210,9123848,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4894 +nqueens,8,7,copy-patch,1237745,8855859,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,5759 +nqueens,8,7,guarded,1457971,9413428,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,partial,1516950,9251264,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,decoded,1764673,9458911,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,7,aot,1506645,9426628,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,aot,1536057,9600027,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,decoded,1703514,9420424,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,partial,1512555,9074865,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,guarded,1491327,9266878,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,copy-patch,1313956,9103384,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,5182 +nqueens,8,8,copy-patch-guarded,1259440,9031958,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,4583 +nqueens,8,8,address-cache,1299905,8967238,92,1c8d80bdc643bd507f344971ab078ef2e2c92b67009f4dd82a3c87e71f2a1bc8,0 +nqueens,8,8,python,781910,26604867,92,,0 diff --git a/bench/native/results/strategies/validation.json b/bench/native/results/strategies/validation.json new file mode 100644 index 00000000..a8b37711 --- /dev/null +++ b/bench/native/results/strategies/validation.json @@ -0,0 +1,57 @@ +{ + "suites": { + "aot": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "decoded": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "partial": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "guarded": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "copy-patch": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "copy-patch-guarded": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + }, + "address-cache": { + "checks": 147, + "boundary_restarts": 32, + "sigkill_restarts": 24, + "prepared_partial_commit_replay": "passed", + "visibility_and_rejections": "passed" + } + }, + "cross_method_restarts": 49, + "live_edit_groups": 7, + "prepared_call_replays": 7, + "address_cache_groups": 3 +} diff --git a/bench/native/results/validation.json b/bench/native/results/validation.json new file mode 100644 index 00000000..eae0386f --- /dev/null +++ b/bench/native/results/validation.json @@ -0,0 +1 @@ +{"checks": 147, "boundary_restarts": 32, "sigkill_restarts": 24, "prepared_partial_commit_replay": "passed", "visibility_and_rejections": "passed"} diff --git a/bench/native/run.py b/bench/native/run.py new file mode 100644 index 00000000..afcc9945 --- /dev/null +++ b/bench/native/run.py @@ -0,0 +1,214 @@ +#!/usr/bin/env python3 +"""Compare scalar native workers, the interpreter, and unchanged Python fixtures.""" +import argparse +from contextlib import closing +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 + +from compile import KV + +ROOT = Path(__file__).resolve().parents[2] +spec = importlib.util.spec_from_file_location('benchmark', ROOT / 'benchmark/run.py') +benchmark = importlib.util.module_from_spec(spec) +spec.loader.exec_module(benchmark) +CASES = {'iops': (2000, 200000), 'fib': (10, 18), 'nqueens': (6, 8)} + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def run(command, env, cpu, expected=0): + start = time.perf_counter_ns() + result = subprocess.run(['taskset', '-c', str(cpu), *map(str, command)], env=env, + capture_output=True, text=True, timeout=120) + if result.returncode != expected: + raise RuntimeError(f'{command}: exit={result.returncode}\n{result.stderr}\n{result.stdout}') + return result, time.perf_counter_ns() - start + + +def compile_worker(args, source, entry, binary): + command = ['python3', Path(__file__).with_name('compile.py'), '--kvlang', args.kvlang, + '--frontend', args.frontend, '--backend', args.backend, '--include', args.include, + '--source', source, '--entry', entry, '--output', binary] + if getattr(args, 'strategy', None): + command += ['--strategy', args.strategy] + run(command, os.environ, args.cpu) + + +def compile_case(args, case, binary): + directory = ROOT / 'benchmark/cases' / case + kv_source, py_source = directory / (case + '.kv'), directory / (case + '.py') + body = '1 << n -> sh\nsh - 1 -> all\nnq(0, 0, 0, all) -> r' if case == 'nqueens' else f'{case}(n) -> r' + wrapper = '\nrwfunc bench_native(n:int64) -> (r:int64) {\n' + body + '\n}\n' + source = binary.with_suffix('.kv') + source.write_text(kv_source.read_text() + wrapper) + compile_worker(args, source, 'bench_native', binary) + return dict(kv_sha256=sha(kv_source), python_sha256=sha(py_source), wrapper=wrapper, + generated_c_sha256=sha(binary.with_suffix('.c'))) + + +def output(result): + ns = re.search(r'__bench_ns:\s*(\d+)', result.stdout) + value = re.search(r'(?:iops a|fib|queens|result) =\s*(-?\d+)', result.stdout) + if not ns or not value or int(ns[1]) <= 0: + raise RuntimeError('invalid output: ' + result.stdout) + return int(ns[1]), int(value[1]) + + +def loaded_libraries(result, frontend): + paths = re.findall(r'calling init:\s*(/\S+)', result.stderr) + if not any(Path(p).resolve() == frontend.resolve() for p in paths): + raise RuntimeError('frontend was not loaded: ' + str(frontend)) + return {p: sha(p) for p in paths if 'libkv' in Path(p).name} + + +def final_state_digest(frontend, dsn): + members = ['pc', 'status', 'frames', 'constants', 'journal', 'program'] + with closing(KV(frontend, dsn)) as store: + return hashlib.sha256(b''.join(store.get('/vthread/native/‥' + m)[1] for m in members)).hexdigest() + + +def measure_pairs(args, scales, variants, workers, jit=False): + + def sample(case, scale, variant): + with tempfile.TemporaryDirectory(prefix='native-paired-') as td: + env = dict(os.environ, BENCH_SCALE=str(scale)) + if variant == 'python': + result, wall = run(['python3', ROOT / 'benchmark/cases' / case / (case + '.py')], env, args.cpu) + digest = '' + else: + dsn = 'shm://' + td + '/store' + worker = workers[case][variant] + _, init_wall = run([worker, dsn, 'init', scale], env, args.cpu) + result, wall = run([worker, dsn, 'run'], env, args.cpu) + wall += init_wall + digest = final_state_digest(args.frontend, dsn) + ns, value = output(result) + data = dict(kernel_ns=ns, wall_ns=wall, result=value, state_sha256=digest) + if jit: + match = re.search(r'__jit_ns:\s*(\d+)', result.stdout) + data['jit_ns'] = int(match[1]) if match else 0 + return data + + fields = ['case', 'scale', 'pair', 'variant', 'kernel_ns', 'wall_ns', 'result', 'state_sha256'] + if jit: + fields.append('jit_ns') + rows = [] + with (args.output / 'samples.csv').open('w', newline='') as f: + writer = csv.DictWriter(f, fieldnames=fields, lineterminator='\n') + writer.writeheader() + for case, points in scales.items(): + for scale in points: + for variant in variants: + sample(case, scale, variant) + for pair in range(args.pairs): + order = variants if pair % 2 == 0 else variants[::-1] + samples = {v: sample(case, scale, v) for v in order} + if len({s['result'] for s in samples.values()}) != 1: + raise RuntimeError('output mismatch') + if len({s['state_sha256'] for v, s in samples.items() if v != 'python'}) != 1: + raise RuntimeError('final KV state mismatch') + for variant, data in samples.items(): + row = dict(case=case, scale=scale, pair=pair, variant=variant, **data) + rows.append(row) + writer.writerow(row) + f.flush() + print(f'{case}({scale}) pair {pair + 1}/{args.pairs}: output and KV state equal', flush=True) + return rows + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for name in ['kvlang', 'frontend', 'baseline-frontend', 'backend', 'include', 'output']: + ap.add_argument('--' + name, type=Path, required=True) + ap.add_argument('--cpu', type=int, default=24) + ap.add_argument('--pairs', type=int, default=9) + args = ap.parse_args() + if args.pairs < 1: + ap.error('--pairs must be positive') + args.output.mkdir(parents=True, exist_ok=True) + binaries = args.output / 'binaries' + binaries.mkdir(exist_ok=True) + os.environ.update(KVSPACE_BACKEND_PATH=str(args.backend), LOG_LEVEL='warn') + metadata = {'cpu': args.cpu, 'cpu_model': benchmark.cpu_model(), + 'python': platform.python_version(), 'pairs': args.pairs, + 'compiler': subprocess.check_output(['cc', '--version'], text=True).splitlines()[0], + 'worker_flags': '-O3 -std=c11 -Wall -Wextra -Werror', + 'timing': 'fresh init each sample; native execute includes every redo commit, excludes init/attach/schema/result/status; wall includes init and run; interpreter/Python use fixture timers', + 'inputs': {}, 'libraries': {str(p): sha(p) for p in [args.frontend, args.baseline_frontend, args.backend / 'libkvspace-c.so.1']}, + 'kvlang': {'path': str(args.kvlang), 'sha256': sha(args.kvlang)}} + workers = {} + for case in CASES: + binary = binaries / case + metadata['inputs'][case] = dict(compile_case(args, case, binary), scales=CASES[case], + worker_sha256=sha(binary), + schema=json.loads(binary.with_suffix('.schema.json').read_text())) + workers[case] = binary + for variant, frontend in [('interpreter', args.baseline_frontend), ('release', args.frontend)]: + with tempfile.TemporaryDirectory(prefix='native-libs-') as td: + env = dict(os.environ, KVSPACE='shm://' + td + '/store', LD_PRELOAD=str(frontend), LD_DEBUG='libs') + result, _ = run([args.kvlang, '-c', 'println("ready")'], env, args.cpu) + metadata[variant + '_loaded'] = loaded_libraries(result, frontend) + with tempfile.TemporaryDirectory(prefix='native-worker-libs-') as td: + result, _ = run([workers['iops'], 'shm://' + td + '/store', 'init', 1], + dict(os.environ, LD_DEBUG='libs'), args.cpu) + metadata['native_loaded'] = loaded_libraries(result, args.frontend) + rows = [] + with (args.output / 'samples.csv').open('w', newline='') as f: + writer = csv.DictWriter(f, fieldnames=['case', 'scale', 'pair', 'variant', 'kernel_ns', 'wall_ns', 'result'], lineterminator='\n') + writer.writeheader() + for case, scales in CASES.items(): + for scale in scales: + for pair in range(args.pairs): + order = ['interpreter', 'release', 'native', 'python'] + if pair % 2: + order.reverse() + expected = None + for name in order: + with tempfile.TemporaryDirectory(prefix='native-paired-') as td: + env = dict(os.environ, BENCH_SCALE=str(scale)) + if name == 'python': + command = ['python3', ROOT / 'benchmark/cases' / case / (case + '.py')] + result, wall = run(command, env, args.cpu) + elif name == 'native': + dsn = 'shm://' + td + '/store' + _, init_wall = run([workers[case], dsn, 'init', scale], env, args.cpu) + result, wall = run([workers[case], dsn, 'run'], env, args.cpu) + wall += init_wall + else: + source = Path(td) / (case + '.kv') + source.write_text((ROOT / 'benchmark/cases' / case / (case + '.kv')).read_text().replace('__SCALE__', str(scale))) + env.update(KVSPACE='shm://' + td + '/store', LD_PRELOAD=str(args.frontend if name == 'release' else args.baseline_frontend)) + result, wall = run([args.kvlang, source], env, args.cpu) + kernel_ns, value = output(result) + if expected is not None and value != expected: + raise RuntimeError(f'result mismatch: {case}/{scale}/{name}: {value} != {expected}') + expected = value + row = dict(case=case, scale=scale, pair=pair, variant=name, kernel_ns=kernel_ns, wall_ns=wall, result=value) + rows.append(row) + writer.writerow(row) + f.flush() + print(f'{case}({scale}) pair {pair + 1}/{args.pairs}: equal', flush=True) + summary = {} + for case, scales in CASES.items(): + for scale in scales: + medians = {name: statistics.median(r['kernel_ns'] for r in rows if r['case'] == case and r['scale'] == scale and r['variant'] == name) / 1e3 for name in ['interpreter', 'release', 'native', 'python']} + summary[f'{case}({scale})'] = medians + print(case, scale, json.dumps(medians), flush=True) + (args.output / 'metadata.json').write_text(json.dumps(metadata, indent=2) + '\n') + (args.output / 'medians-us.json').write_text(json.dumps(summary, indent=2) + '\n') + + +if __name__ == '__main__': + main() diff --git a/bench/native/strategies.c.in b/bench/native/strategies.c.in new file mode 100644 index 00000000..a1c97ef4 --- /dev/null +++ b/bench/native/strategies.c.in @@ -0,0 +1,105 @@ +#include + +typedef struct { size_t index; unsigned literal; } operand_t; +typedef struct { + unsigned opcode, row, callee; + size_t dest; + operand_t reads[@MAX_READS@]; +} instruction_t; +typedef struct { + void *handle; + volatile uint64_t *state, *constants, *journal; + volatile uint8_t *pc; + size_t base; + unsigned depth; +} context_t; + +static const instruction_t instructions[] = { +@INSTRUCTIONS@ +}; + +#ifdef STRATEGY_ADDRESS_CACHE +static volatile uint64_t *slot_addresses[DEPTH * STRIDE / 2]; + +static volatile uint64_t *slot_address(volatile uint64_t *state, size_t index) { + if (state[index] != 3) return state + index; + if (slot_addresses[index / 2]) return slot_addresses[index / 2]; + size_t cursor = index; + for (int hops = 0; hops < DEPTH; hops++) { + if (cursor >= DEPTH * STRIDE - 1 || cursor % STRIDE < 2 || (cursor % STRIDE - 2) % 2) + break; + uint64_t tag = state[cursor]; + if (tag <= 2) return slot_addresses[index / 2] = state + cursor; + if (tag != 3) break; + size_t next = state[cursor + 1]; + if (next / STRIDE >= cursor / STRIDE) break; + cursor = next; + } + return NULL; +} +#endif + +static inline void invalidate_frame(size_t base __attribute__((unused))) { +#ifdef STRATEGY_ADDRESS_CACHE + memset(slot_addresses + base / 2, 0, STRIDE / 2 * sizeof(*slot_addresses)); +#endif +} + +static inline cell_t read_slot(volatile uint64_t *state, size_t index) { +#ifdef STRATEGY_ADDRESS_CACHE + volatile uint64_t *address = slot_address(state, index); + if (address) { + uint64_t tag = address[0], value = address[1]; + if (tag == 1 || (tag == 2 && value <= 1)) return (cell_t){value, tag}; + } +#endif +#ifdef STRATEGY_GUARDED + uint64_t tag = state[index]; + if (tag == 1) return (cell_t){state[index + 1], 1}; + if (tag == 2) { + uint64_t value = state[index + 1]; + if (value <= 1) return (cell_t){value, 2}; + } +#endif + return load_cell(state, index); +} + +static inline int write_slot(volatile uint64_t *state, volatile uint64_t *journal, + unsigned *count, size_t index, cell_t value) { +#ifdef STRATEGY_ADDRESS_CACHE + volatile uint64_t *address = slot_address(state, index); + if (address && address[0] <= 2) { + stage(journal, count, address - state + 1, value.value); + stage(journal, count, address - state, value.tag); + return 0; + } +#endif +#ifdef STRATEGY_GUARDED + if (state[index] <= 2) { + stage(journal, count, index + 1, value.value); + stage(journal, count, index, value.tag); + return 0; + } +#endif + return store_cell(state, journal, count, index, value); +} + +static inline __attribute__((always_inline)) cell_t read_operand(context_t *ctx, const operand_t *op) { + return op->literal ? load_constant(ctx->constants, op->index) + : read_slot(ctx->state, ctx->base + op->index); +} + +static inline __attribute__((always_inline)) int evaluate(context_t *ctx, const instruction_t *inst, + unsigned opcode) { + void *h = ctx->handle; + volatile uint64_t *state = ctx->state, *journal = ctx->journal; + volatile uint8_t *pc = ctx->pc; + size_t base = ctx->base; + unsigned depth = ctx->depth, count = 0; + switch (opcode) { +@OPERATIONS@ + default: return fail(h, "invalid opcode"); + } +} + +@BACKEND@ diff --git a/bench/native/strategies.md b/bench/native/strategies.md new file mode 100644 index 00000000..5289c4c0 --- /dev/null +++ b/bench/native/strategies.md @@ -0,0 +1,53 @@ +# Native execution strategies + +This experiment compares three approaches on the existing scalar SHM prototype. It retains its packed KV frame ABI, fixed mappings, exclusive worker, fresh PC/operand reads, and per-instruction redo commits. It does not integrate a compiler into the default runtime or extend the accepted language subset. + +All modes use `compile.instruction_code` as the instruction semantics. The original AOT workers are byte-identical to the preceding address-cache experiment. + +| Mode | Implementation | +|---|---| +| `aot` | Existing generated C with a function/row switch. | +| `decoded` | Decoded scalar micro-op interpreter; immutable instruction descriptors, runtime opcode/operand-mode dispatch. | +| `partial` | GCC specializes an inlined executor against constant instruction descriptors and opcodes. The resulting binaries eliminate the descriptor table. | +| `guarded` | Partial evaluation plus direct reads/writes when live slot tags match; otherwise use the original reference traversal. | +| `copy-patch` | Copy a 26-byte x86-64 call stencil per instruction, patch descriptor/handler addresses, then make the mapping RX. Each stencil jumps to an opcode-specific C helper. | +| `copy-patch-guarded` | The same JIT with guarded slot access in its helpers. | +| `address-cache` | Partial evaluation plus private 64-bit terminal-cell addresses. Every reference edge must decrease frame depth; same-depth/forward chains use wholly generic traversal. | + +The copy-and-patch experiment uses opcode-helper stencils, not inlined arithmetic stencils or an optimizing trace JIT. Operand modes remain dynamic in its helpers. Templates and descriptors still require an offline C build (one observed build per variant/case: 0.20–0.50 s). Its roughly 5 us JIT time measures only mmap/copy/patch/mprotect, excluding layout, descriptor creation, offline compilation, and store attachment. It therefore does not establish an end-to-end compilation advantage. + +The address cache stores no tags, scalar values, constants, or PC. Each access reads live tags and terminal values. Calls clear all address entries for the child frame before reusing it; each worker starts with empty caches. Descending aliases depend only on active ancestors, which cannot be reinitialized while the child executes. Stopped-worker KV edits are visible on a fresh run. Concurrent external writes remain excluded by the original prototype contract. + +## Reproduce + +```sh +python3 bench/native/strategies.py \ + --kvlang /path/to/kvlang/bin/kvlang \ + --frontend /path/to/release/libkvspace.so.1 \ + --backend /path/to/backend/build --include /path/to/abi/include \ + --output bench/native/results/strategies +python3 bench/native/validate_strategies.py \ + --kvlang /path/to/kvlang/bin/kvlang \ + --frontend /path/to/release/libkvspace.so.1 \ + --backend /path/to/backend/build --include /path/to/abi/include \ + --binaries bench/native/results/strategies/binaries \ + --output bench/native/results/strategies/validation.json +``` + +`compile.py --strategy ` also compiles individual supported programs. Omitting the option preserves the original AOT generator. Linux x86-64 is required for this comparison. + +## Results + +CPU24, Xeon Gold 6418H, GCC 14.3, CPython 3.10.12, unchanged repository iops/fib/nqueens cores and Python fixtures, all three standard scales plus a larger scale, one warmup and nine alternating rounds. 864 measured outputs agree; all 108 groups have byte-identical final native KV-state digests. Metadata records source/library/binary hashes, compile observations and text sizes. `codegen.json` verifies descriptor elimination and opcode-specific JIT helpers. + +Median execution times in ms, including redo and excluding init/attach/reporting/JIT preparation: + +| Case | AOT | Partial | Guarded | Copy-patch | Copy-patch + guarded | Address cache | Python | +|---|---:|---:|---:|---:|---:|---:|---:| +| iops(200000) | 17.834 | 20.946 | 16.533 | 18.634 | 17.483 | 16.510 | 8.903 | +| fib(18) | 1.427 | 1.514 | 1.479 | 1.358 | 1.349 | 1.471 | 0.514 | +| nqueens(8) | 1.507 | 1.523 | 1.431 | 1.320 | 1.274 | 1.378 | 0.791 | + +The nqueens combination improves on AOT by 1.18x (paired ratios 1.11–1.24x). Partial evaluation does not improve on the existing AOT in these large cases. Address caching reduces work relative to partial evaluation but does not improve fib relative to AOT. There is no uniform winning method or order-of-magnitude improvement; the fastest native execution remains 1.61–2.63x Python time on these three large inputs. Raw samples, startup-inclusive wall times and paired ranges are retained in `results/strategies/`. + +Each of seven native modes passes 147 checks, including 32 boundary restarts, 24 SIGKILL/restarts, KV visibility/rejection and partial redo replay. Additional checks cover 49 cross-method recursive resumes, seven live-edit groups, seven partially applied call replays, and three address-cache fixtures: repeated calls/terminal value changes, deep aliases, and forward references into inactive frames after ancestor reuse. These validate the documented scalar prototype, not all runtime operations/backends or death during attach/init/reporting. diff --git a/bench/native/strategies.py b/bench/native/strategies.py new file mode 100644 index 00000000..5cfc3b83 --- /dev/null +++ b/bench/native/strategies.py @@ -0,0 +1,231 @@ +#!/usr/bin/env python3 +"""Compare shared-semantics scalar execution and code-generation strategies.""" +import argparse +import json +import os +from pathlib import Path +import platform +import statistics +import subprocess +import tempfile + +from compile import STRATEGIES, instruction_code +from fast import MODES, generate as fast_generate +from run import CASES, benchmark, compile_case, loaded_libraries, measure_pairs, run, sha + +VARIANTS = ['aot', *[v for v in STRATEGIES if v not in MODES], 'python'] +FLAGS = ['-O3', '-std=c11', '-Wall', '-Wextra', '-Werror'] + + +def generate(source, schema, variant): + if variant in MODES: + return fast_generate(source, variant, schema) + guarded = variant in ('guarded', 'copy-patch-guarded') + variant = 'copy-patch' if variant == 'copy-patch-guarded' else variant + shapes, descriptors, positions = {}, [], {} + for fn in schema['functions'].values(): + positions[fn['id']] = (len(descriptors), len(fn['instructions'])) + for row, instruction in enumerate(fn['instructions'], 1): + op, reads, writes, call = instruction + shape = (op if not call else 'call', len(reads), len(writes), call) + if shape not in shapes: + shapes[shape] = (len(shapes), fn, row, instruction) + opcode = shapes[shape][0] + operands = [(index if mode == 'constant' else 2 + 2 * fn['slots'][index], + int(mode == 'constant')) for mode, index in reads] + dest = 2 + 2 * fn['slots'][writes[0][1]] if writes else 0 + callee = schema['functions'][op]['id'] if call else 0 + descriptors.append(dict(opcode=opcode, row=row, callee=callee, dest=dest, reads=operands)) + initializers, operations = [], [] + for inst in descriptors: + operands = ', '.join(f'{{{index}, {literal}}}' for index, literal in inst['reads']) or '{0, 0}' + initializers.append('{' + ', '.join(str(inst[k]) for k in ['opcode', 'row', 'callee', 'dest']) + ', {' + operands + '}}') + for opcode, fn, row, instruction in shapes.values(): + bindings = dict(reads={i: f'read_operand(ctx, &inst->reads[{i}])' for i in range(len(instruction[1]))}, + dest='base + inst->dest' if instruction[2] else None, + next_row='inst->row + 1', callee='inst->callee', tail='return 0;', + references={i: f'(inst->reads[{i}].literal ? a{i}.value : base + inst->reads[{i}].index)' + for i in range(len(instruction[1]))}, + tags={i: f'(inst->reads[{i}].literal ? 1 : 3)' for i in range(len(instruction[1]))}) + body = '\n'.join(instruction_code(fn, row, instruction, schema['functions'], bindings)) + body = body.replace('size_t next = (depth + 1) * STRIDE;', + 'size_t next = (depth + 1) * STRIDE;\ninvalidate_frame(next);') + operations.append(f'case {opcode}: {{\n{body.replace("store_cell(", "write_slot(")}\n}}') + backend = '' + if variant == 'copy-patch': + source = '#define _DEFAULT_SOURCE\n' + source + helpers = [f'static __attribute__((noinline)) int opcode_{i}(context_t *ctx, const instruction_t *inst) {{ return evaluate(ctx, inst, {i}); }}' + for i in range(len(shapes))] + backend = '\n'.join(helpers) + ''' +typedef int (*opcode_fn)(context_t *, const instruction_t *); +typedef int (*entry_fn)(context_t *); +static const opcode_fn handlers[] = {''' + ', '.join(f'opcode_{i}' for i in range(len(shapes))) + '''}; +static uint8_t *jit_code; +static size_t jit_size; +static entry_fn jit_entries[sizeof(instructions) / sizeof(*instructions)]; + +static int jit_prepare(void) { + static const uint8_t stencil[] = { + 0xf3, 0x0f, 0x1e, 0xfa, + 0x48, 0xbe, 0, 0, 0, 0, 0, 0, 0, 0, + 0x48, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, + 0xff, 0xe0 + }; + _Static_assert(sizeof(entry_fn) == sizeof(uintptr_t), "x86-64 function address required"); + jit_size = sizeof(jit_entries) / sizeof(*jit_entries) * 32; + jit_code = mmap(NULL, jit_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (jit_code == MAP_FAILED) { jit_code = NULL; return -1; } + for (size_t i = 0; i < sizeof(jit_entries) / sizeof(*jit_entries); i++) { + uint8_t *entry = jit_code + i * 32; + uintptr_t descriptor = (uintptr_t)&instructions[i]; + uintptr_t handler = (uintptr_t)handlers[instructions[i].opcode]; + memcpy(entry, stencil, sizeof(stencil)); + memcpy(entry + 6, &descriptor, sizeof(descriptor)); + memcpy(entry + 16, &handler, sizeof(handler)); + memcpy(&jit_entries[i], &entry, sizeof(entry)); + } + if (mprotect(jit_code, jit_size, PROT_READ | PROT_EXEC)) return -1; + return 0; +} +''' + context = 'context_t ctx = {h, state, constants, journal, pc, base, depth};\n' + if variant in ('partial', 'guarded', 'address-cache'): + dispatch = 'switch (state[base]) {\n' + for fid, (offset, length) in positions.items(): + dispatch += f'case {fid}: switch (row) {{\n' + for i in range(length): + inst = descriptors[offset + i] + dispatch += f'case {i + 1}: if (evaluate(&ctx, &instructions[{offset + i}], {inst["opcode"]})) return -1; break;\n' + dispatch += 'default: return fail(h, "invalid PC row"); } break;\n' + dispatch += 'default: return fail(h, "invalid function");\n}' + else: + dispatch = 'uint64_t fid = state[base];\nsize_t offset;\nswitch (fid) {\n' + for fid, (offset, length) in positions.items(): + dispatch += f'case {fid}: if (row > {length}) return fail(h, "invalid PC row"); offset = {offset}; break;\n' + dispatch += 'default: return fail(h, "invalid function");\n}\n' + index = 'offset + row - 1' + if variant == 'copy-patch': + dispatch += f'if (jit_entries[{index}](&ctx)) return -1;' + else: + dispatch += f'const instruction_t *inst = &instructions[{index}];\nif (evaluate(&ctx, inst, inst->opcode)) return -1;' + template = Path(__file__).with_suffix('.c.in').read_text() + template = template.replace('@MAX_READS@', str(max(1, max(len(d['reads']) for d in descriptors)))) + template = template.replace('@INSTRUCTIONS@', ',\n'.join(initializers)).replace('@OPERATIONS@', '\n'.join(operations)).replace('@BACKEND@', backend) + start = source.index(' switch (state[base]) {\n') + end = source.index(' if (budget &&', start) + source = source[:start] + context + dispatch + '\n' + source[end:] + source = source.replace('row = digits(pc, ROW_POS, 4), count = 0;', 'row = digits(pc, ROW_POS, 4);') + source = source.replace('static int execute(', template + '\nstatic int execute(', 1) + if guarded: + source = '#define STRATEGY_GUARDED\n' + source + if variant == 'address-cache': + source = '#define STRATEGY_ADDRESS_CACHE\n' + source + if variant == 'copy-patch': + source = source.replace(' uint64_t start = now();\n int rc = execute(', + ' uint64_t jit_start = now();\n if (jit_prepare()) { result = 3; goto done; }\n' + ' printf("__jit_ns: %llu\\n", (unsigned long long)(now() - jit_start));\n' + ' uint64_t start = now();\n int rc = execute(') + source = source.replace('done:\n kvspaceClose(h);', 'done:\n if (jit_code) munmap(jit_code, jit_size);\n kvspaceClose(h);') + return source, dict(instructions=len(descriptors), opcode_shapes=len(shapes), jit_bytes=32 * len(descriptors) if variant == 'copy-patch' else 0) + + +def build(args, aot, binary, variant): + schema = json.loads(aot.with_suffix('.schema.json').read_text()) + source, details = generate(aot.with_suffix('.c').read_text(), schema, variant) + binary.with_suffix('.c').write_text(source) + binary.with_suffix('.schema.json').write_text(json.dumps(schema, indent=2) + '\n') + _, wall = run(['cc', *FLAGS, '-I' + str(args.include), binary.with_suffix('.c'), + args.frontend, '-Wl,-rpath,' + str(args.frontend.parent), '-o', binary], os.environ, args.cpu) + size = subprocess.check_output(['size', str(binary)], text=True).splitlines()[1].split() + return dict(details, compile_ns=wall, text_bytes=int(size[0]), worker_sha256=sha(binary), generated_c_sha256=sha(binary.with_suffix('.c'))) + + +def codegen_evidence(binaries, metadata, variants): + evidence = {} + for case in CASES: + evidence[case] = {} + for variant in variants[:-1]: + binary = binaries / variant / case + symbols = subprocess.check_output(['nm', '-S', str(binary)], text=True).splitlines() + table = any(line.split()[-1] == 'instructions' for line in symbols) + helpers = sum(line.split()[-1].startswith('opcode_') for line in symbols) + if variant in ('partial', 'guarded', 'address-cache') and table: + raise RuntimeError('compiler retained constant descriptors: ' + str(binary)) + if variant.startswith('copy-patch') and helpers != metadata['inputs'][case]['variants'][variant]['opcode_shapes']: + raise RuntimeError('missing opcode-specific helpers: ' + str(binary)) + evidence[case][variant] = dict(instruction_table_retained=table, opcode_helpers=helpers, worker_sha256=sha(binary)) + return evidence + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for name in ['kvlang', 'frontend', 'backend', 'include', 'output']: + ap.add_argument('--' + name, type=Path, required=True) + ap.add_argument('--cpu', type=int, default=24) + ap.add_argument('--pairs', type=int, default=9) + ap.add_argument('--variants', nargs='+', choices=[*VARIANTS, *MODES], default=VARIANTS) + args = ap.parse_args() + selected = args.variants + if selected[0] != 'aot' or selected[-1] != 'python' or len(set(selected)) != len(selected): + ap.error('--variants must start with aot, end with python, and contain no duplicates') + if args.pairs < 1: + ap.error('--pairs must be positive') + if platform.machine() != 'x86_64': + ap.error('copy-and-patch stencils require Linux x86-64') + os.environ.update(KVSPACE_BACKEND_PATH=str(args.backend), LOG_LEVEL='warn') + env = dict(os.environ) + binaries = args.output / 'binaries' + for variant in selected[:-1]: + (binaries / variant).mkdir(parents=True, exist_ok=True) + metadata = dict(cpu=args.cpu, cpu_model=benchmark.cpu_model(), python=platform.python_version(), + compiler=subprocess.check_output(['cc', '--version'], text=True).splitlines()[0], + flags=FLAGS, pairs=args.pairs, warmups=1, inputs={}, variants=selected, + timing='execute includes redo; JIT preparation separate; wall includes init and run; build timings are one observation', + libraries={str(p): sha(p) for p in [args.frontend, args.backend / 'libkvspace-c.so.1']}, + kvlang=dict(path=str(args.kvlang), sha256=sha(args.kvlang))) + workers = {} + scales = {case: [*benchmark.SWEEP[case], CASES[case][-1]] for case in CASES} + for case in CASES: + aot = binaries / 'aot' / case + inputs = compile_case(args, case, aot) + workers[case] = {'aot': aot} + variants = {} + for variant in selected[1:-1]: + binary = binaries / variant / case + variants[variant] = build(args, aot, binary, variant) + workers[case][variant] = binary + metadata['inputs'][case] = dict(inputs, scales=scales[case], variants=variants, aot_sha256=sha(aot)) + metadata['inputs'][case]['aot_text_bytes'] = int(subprocess.check_output(['size', str(aot)], text=True).splitlines()[1].split()[0]) + with tempfile.TemporaryDirectory(prefix='strategies-libraries-') as td: + loaded, _ = run([workers['iops']['aot'], 'shm://' + td + '/store', 'init', 1], + dict(env, LD_DEBUG='libs'), args.cpu) + metadata['loaded'] = loaded_libraries(loaded, args.frontend) + + rows = measure_pairs(args, scales, selected, workers, jit=True) + summary = {} + for case, points in scales.items(): + for scale in points: + samples = [r for r in rows if r['case'] == case and r['scale'] == scale] + medians = {v: statistics.median(r['kernel_ns'] for r in samples if r['variant'] == v) / 1e3 for v in selected} + paired = {} + aot = [r['kernel_ns'] for r in samples if r['variant'] == 'aot'] + for variant in selected[1:-1]: + times = [r['kernel_ns'] for r in samples if r['variant'] == variant] + ratios = [base / value for base, value in zip(aot, times)] + paired[variant] = dict(median=statistics.median(ratios), minimum=min(ratios), maximum=max(ratios)) + summary[f'{case}({scale})'] = dict(medians_us=medians, + wall_medians_ms={v: statistics.median(r['wall_ns'] for r in samples if r['variant'] == v) / 1e6 for v in selected}, + paired_aot_speedups=paired, + jit_medians_us={v: statistics.median(r['jit_ns'] for r in samples if r['variant'] == v) / 1e3 + for v in ['copy-patch', 'copy-patch-guarded'] if v in selected}) + metadata.update(samples=len(rows), equal_final_state_groups=len(rows) // len(selected)) + metadata['generator_sha256'] = {name: sha(Path(__file__).with_name(name)) + for name in ['compile.py', 'strategies.py', 'strategies.c.in', 'worker.c.in', 'run.py', 'fast.py', 'fast.c.in']} + (args.output / 'codegen.json').write_text(json.dumps(codegen_evidence(binaries, metadata, selected), indent=2) + '\n') + (args.output / 'metadata.json').write_text(json.dumps(metadata, indent=2) + '\n') + (args.output / 'medians-us.json').write_text(json.dumps(summary, indent=2) + '\n') + print(json.dumps(summary, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/bench/native/validate.py b/bench/native/validate.py new file mode 100644 index 00000000..3d13f7ea --- /dev/null +++ b/bench/native/validate.py @@ -0,0 +1,221 @@ +#!/usr/bin/env python3 +"""Validate SHM state visibility, rejection, and recovery across worker processes.""" +import argparse +from contextlib import closing +import ctypes as c +import json +import os +from pathlib import Path +import random +import re +import subprocess +import tempfile +import time + +from compile import KV, STRATEGIES +from run import compile_worker, run + +ROOT = '/vthread/native/' + + +class Store(KV): + def view(self, member, element=c.c_uint64): + key = ROOT + '‥' + member + _, raw = self.get(key) + p = c.c_void_p() + self.lib.kvspaceWriteInPlace.argtypes = [c.c_void_p, c.c_char_p, c.c_int, c.c_int32, + c.POINTER(c.c_void_p), c.c_void_p, c.c_uint32] + err = c.create_string_buffer(256) + rc = self.lib.kvspaceWriteInPlace(self.handle, key.encode(), 0, len(raw), c.byref(p), err, len(err)) + if rc or not p.value: + raise RuntimeError('cannot map ' + key) + return (element * (len(raw) // c.sizeof(element))).from_address(p.value) + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for name in ['kvlang', 'frontend', 'backend', 'include', 'binaries']: + ap.add_argument('--' + name, type=Path, required=True) + ap.add_argument('--cpu', type=int, default=24) + ap.add_argument('--sigkill-restarts', type=int, default=24) + ap.add_argument('--strategy', choices=STRATEGIES) + args = ap.parse_args() + if args.sigkill_restarts < 0: + ap.error('--sigkill-restarts must be nonnegative') + os.environ.update(KVSPACE_BACKEND_PATH=str(args.backend), LOG_LEVEL='warn') + env, checks = dict(os.environ), 0 + with tempfile.TemporaryDirectory(prefix='native-validation-') as td: + dsn = 'shm://' + td + '/store' + + def init(case, n): + run([args.binaries / case, dsn, 'init', n], env, args.cpu) + + def finish(case, expected, exit_code=0, budget=None): + nonlocal checks + command = [args.binaries / case, dsn, 'run'] + if budget is not None: + command.append(budget) + result, _ = run(command, env, args.cpu, exit_code) + if exit_code == 0: + match = re.search(r'result = (-?\d+)', result.stdout) + if not match or int(match[1]) != expected: + raise AssertionError(result.stdout) + checks += 1 + + for n in [0, 1, 2, 31, 2000]: + init('iops', n) + finish('iops', n) + for n, expected in [(-3, -3), (0, 0), (1, 1), (2, 1), (5, 5), (10, 55), (18, 2584)]: + init('fib', n) + finish('fib', expected) + for n, expected in enumerate([1, 1, 0, 0, 2, 10, 4, 40, 92]): + init('nqueens', n) + finish('nqueens', expected) + for budget in range(1, 33): + init('fib', 10) + finish('fib', None, 75, budget) + finish('fib', 55) + init('fib', 260) + finish('fib', None, 4) + for fault in ['argument', 'constant', 'status', 'pc', 'reference', 'tag', 'path', 'journal_path', 'program', 'journal']: + init('iops', 6) + finish('iops', None, 75, 1) + with closing(Store(args.frontend, dsn)) as store: + frames = store.view('frames') + if fault == 'argument': + frames[3] = 4 + elif fault == 'constant': + schema = json.loads((args.binaries / 'iops.schema.json').read_text()) + index = schema['constants'].index([1, 0]) + store.view('constants')[index * 2 + 1] = 5 + elif fault == 'status': + store.view('status', c.c_uint8)[:] = b'paused!' + elif fault == 'pc': + store.view('pc', c.c_uint8)[-7:-3] = b'0009' + elif fault == 'reference': + frames[2], frames[3] = 3, (1 << 64) - 1 + elif fault == 'tag': + frames[2] = 9 + elif fault == 'path': + store.view('pc', c.c_uint8)[0] = ord('x') + elif fault == 'journal_path': + store.view('pc', c.c_uint8)[-10] = ord('x') + store.view('journal')[:3] = [1, 1, 1] + elif fault == 'program': + store.view('program', c.c_uint8)[0] ^= 1 + elif fault == 'journal': + store.view('journal')[0] = (1 << 64) - 1 + if fault in ['argument', 'constant']: + finish('iops', 4 if fault == 'argument' else 11) + elif fault == 'status': + finish('iops', None, 1) + with closing(Store(args.frontend, dsn)) as store: + store.view('status', c.c_uint8)[:] = b'running' + finish('iops', 6) + else: + finish('iops', None, 4) + init('iops', 6) + for _ in range(16): + finish('iops', None, 75, 1) + with closing(Store(args.frontend, dsn)) as store: + pc = bytes(store.view('pc', c.c_uint8)).decode() + if pc.endswith('/[0006,0]'): + break + else: + raise AssertionError('missing increment PC') + with closing(Store(args.frontend, dsn)) as store: + frames, journal = store.view('frames'), store.view('journal') + # Simulate death after partial application of a prepared increment. + journal[1:7] = [1, 7, 5, 1, 4, 1] + frames[4], frames[5] = 1, 999 + store.view('pc', c.c_uint8)[-7] = ord('x') + journal[0] = 3 + finish('iops', 6) + rng = random.Random(20261008) + for _ in range(args.sigkill_restarts): + init('iops', 2000000) + proc = subprocess.Popen(['taskset', '-c', str(args.cpu), str(args.binaries / 'iops'), dsn, 'run'], env=env, stdout=subprocess.PIPE) + try: + deadline = time.monotonic() + 5 + while True: + stat = Path(f'/proc/{proc.pid}/stat').read_text().split() + if int(stat[13]) + int(stat[14]) > 0: + break + if proc.poll() is not None or time.monotonic() > deadline: + raise AssertionError('worker did not execute') + time.sleep(0.0001) + time.sleep(rng.uniform(0.0001, 0.005)) + proc.kill() + if proc.wait() != -9: + raise AssertionError('worker completed before kill') + finally: + if proc.poll() is None: + proc.kill() + proc.wait() + proc.stdout.close() + finish('iops', 2000000) + init('iops', 10000000) + proc = subprocess.Popen([str(args.binaries / 'iops'), dsn, 'run', '10000000'], env=env, stdout=subprocess.PIPE) + try: + time.sleep(0.02) + finish('iops', None, 6) + run([args.binaries / 'iops', dsn, 'init', 1], env, args.cpu, 6) + finally: + try: + if proc.wait(timeout=20) != 75: + raise AssertionError('lock holder did not stop at instruction boundary') + finally: + if proc.poll() is None: + proc.kill() + proc.wait() + proc.stdout.close() + source = Path(td) / 'types.kv' + source.write_text('''rwfunc negative(n:int64) -> (r:int64) { + n >> 1 -> r +} +rwfunc inc(n:int64) -> (r:int64) { + n + 1 -> r +} +rwfunc literal(n:int64) -> (r:int64) { + inc(1) -> r +} +rwfunc alias(n:int64) -> (r:int64) { + inc(n) -> r +} +rwfunc boolean(n:int64) -> (r:int64) { + if (true) { + n -> r + } else { + 0 -> r + } +} +''') + for name, n, expected in [('negative', -4, -2), ('literal', 9, 2), ('alias', 9, 10), ('boolean', 7, 7), ('inc', (1 << 63) - 1, None)]: + binary = args.binaries / name + compile_worker(args, source, name, binary) + init(name, n) + finish(name, expected, 4 if expected is None else 0) + for body, message in [('n = n + 1\nn -> r', 'read-only'), ('n ÷ 2 -> r', 'unsupported opcode')]: + source.write_text('rwfunc rejected(n:int64) -> (r:int64) {\n' + body + '\n}\n') + try: + compile_worker(args, source, 'rejected', args.binaries / 'rejected') + except RuntimeError as error: + if message not in str(error): + raise + else: + raise AssertionError('unsupported source accepted') + checks += 1 + init('iops', 6) + finish('iops', None, 75, 1) + with closing(Store(args.frontend, dsn)) as store: + store.view('status', c.c_uint8)[:] = b'initial' + store.view('frames')[3] = 100 + finish('iops', None, 1) + init('iops', 2) + finish('iops', 2) + print(json.dumps({'checks': checks, 'boundary_restarts': 32, 'sigkill_restarts': args.sigkill_restarts, + 'prepared_partial_commit_replay': 'passed', 'visibility_and_rejections': 'passed'})) + + +if __name__ == '__main__': + main() diff --git a/bench/native/validate_codec.py b/bench/native/validate_codec.py new file mode 100644 index 00000000..2a489f44 --- /dev/null +++ b/bench/native/validate_codec.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +"""Exhaust-check the current volatile PC/status codec on a separate CPU.""" +import argparse, hashlib, json, subprocess, tempfile +from pathlib import Path + +p=argparse.ArgumentParser() +p.add_argument('--cpu',type=int,default=25) +p.add_argument('--output',type=Path,required=True) +a=p.parse_args() +from fast import generate +base=Path(__file__).resolve().parent +source,_=generate((base/'worker.c.in').read_text(),'fast-pc',{'functions':{}}) +codec=source[source.index('#if __BYTE_ORDER__'):source.index('static int replay(')] +start=source.index(' if (((volatile word_t *)status)') +end=source.index(' return 1;',start)+len(' return 1;') +status_check=source[start:end].replace('return 1;', 'return 0;') +harness=r""" +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#define ROOT "/vthread/native" +#define DEPTH_POS (sizeof(ROOT)+1) +#define ROW_POS (DEPTH_POS+6) +"""+codec+r""" +static unsigned oracle(const uint8_t *s, int n) { + unsigned v=0; + for(int i=0;i'9') return UINT32_MAX; + v=v*10+s[i]-'0'; + } + return v; +} +static int status_ok(volatile uint8_t *status) { +@STATUS_CHECK@ + return 1; +} +static void must(int ok) { if(!ok) { fputs("codec mismatch\n",stderr); exit(1); } } +int main(void) { + uint8_t space[64]; + uint64_t checks=0; + for(unsigned align=0;align<8;align++) { + uint8_t *pc=space+align; + for(unsigned row=0;row<10000;row++) { + char expected[64]; + snprintf(expected,sizeof expected,ROOT "/[007]/[%04u,0]",row); + memcpy(pc,ROOT "/[000]/[0001,0]",strlen(ROOT "/[000]/[0001,0]")); + set_pc(pc,7,row); + must(!memcmp(pc,expected,strlen(expected)) && digits(pc,DEPTH_POS,3)==7 && digits(pc,ROW_POS,4)==row); + checks++; + } + for(unsigned depth=0;depth<256;depth++) { + char expected[64]; + snprintf(expected,sizeof expected,ROOT "/[%03u]/[1234,0]",depth); + set_pc(pc,depth,1234); + must(!memcmp(pc,expected,strlen(expected)) && digits(pc,DEPTH_POS,3)==depth);checks++; + } + for(unsigned value=0;value<256;value++) { + pc[DEPTH_POS+3]=(uint8_t)value; + set_pc(pc,17,1234); + must(pc[DEPTH_POS+3]==value);checks++; + } + for(unsigned pos=0;pos<7;pos++) for(unsigned value=0;value<256;value++) { + memcpy(pc,ROOT "/[001]/[1234,0]",strlen(ROOT "/[001]/[1234,0]")); + pc[pos<3?DEPTH_POS+pos:ROW_POS+pos-3]=(uint8_t)value; + must(digits(pc,DEPTH_POS,3)==oracle(pc+DEPTH_POS,3) && digits(pc,ROW_POS,4)==oracle(pc+ROW_POS,4));checks++; + } + for(unsigned pos=0;pos<7;pos++) for(unsigned value=0;value<256;value++) { + memcpy(pc,"running",7);pc[pos]=(uint8_t)value; + must(status_ok(pc)==(!memcmp(pc,"running",7)));checks++; + } + } + uint8_t *pc=space+1; + for(uint32_t word=0;word<(UINT32_C(1)<<24);word++) { + memcpy(pc+DEPTH_POS,&word,3); + must(digits(pc,DEPTH_POS,3)==oracle(pc+DEPTH_POS,3));checks++; + } + for(uint32_t n=0;n<65536;n++) { + uint32_t word=UINT32_C(0x30303030)^((n&15)|((n&240)<<4)|((n&3840)<<8)|((n&61440)<<12)); + memcpy(pc+ROW_POS,&word,4); + must(digits(pc,ROW_POS,4)==oracle(pc+ROW_POS,4));checks++; + } + size_t pagesize=(size_t)sysconf(_SC_PAGESIZE); + uint8_t *mapping=mmap(NULL,2*pagesize,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0); + must(mapping!=MAP_FAILED && !mprotect(mapping+pagesize,pagesize,PROT_NONE)); + uint8_t *status=mapping+pagesize-7; + memcpy(status,"running",7);must(status_ok(status));checks++; + pc=mapping+pagesize-strlen(ROOT "/[000]/[0001,0]"); + memcpy(pc,ROOT "/[000]/[0001,0]",strlen(ROOT "/[000]/[0001,0]")); + set_pc(pc,255,9999);must(digits(pc,DEPTH_POS,3)==255 && digits(pc,ROW_POS,4)==9999);checks++; + must(!munmap(mapping,2*pagesize)); + printf("codec checks=%llu passed\n",(unsigned long long)checks); +} +""" +harness=harness.replace('@STATUS_CHECK@',status_check) +report={'cpu':a.cpu,'scope':'Decimal PC codec and exact seven-byte status','coverage':['all 2^24 depth-byte combinations','all 16^4 relevant row-nibble combinations','all legal depth/row values at eight alignments','all 256 byte replacements at every PC digit/status byte','guard-page exact body boundaries'],'source_sha256':{name:hashlib.sha256((base/name).read_bytes()).hexdigest() for name in ['fast.py','fast.c.in','worker.c.in']},'harness_sha256':hashlib.sha256(harness.encode()).hexdigest(),'runs':[]} +with tempfile.TemporaryDirectory(prefix='native-review-codec-') as td: + cfile=Path(td)/'codec.c';cfile.write_text(harness) + for compiler,flags in [('cc',['-O3']),('clang',['-O1','-fsanitize=address,undefined','-fno-omit-frame-pointer'])]: + binary=Path(td)/(compiler+'-codec') + subprocess.run(['taskset','-c',str(a.cpu),compiler,*flags,'-std=c11','-Wall','-Wextra','-Werror',str(cfile),'-o',str(binary)],check=True,capture_output=True,text=True) + result=subprocess.run(['taskset','-c',str(a.cpu),str(binary)],check=False,capture_output=True,text=True,timeout=30) + report['runs'].append({'compiler':subprocess.check_output([compiler,'--version'],text=True).splitlines()[0],'flags':flags,'stdout':result.stdout.strip(),'stderr':result.stderr,'exit':result.returncode}) +a.output.write_text(json.dumps(report,indent=2)+'\n') +print(json.dumps(report,indent=2)) +raise SystemExit(any(run['exit'] for run in report['runs'])) diff --git a/bench/native/validate_strategies.py b/bench/native/validate_strategies.py new file mode 100644 index 00000000..3e06c284 --- /dev/null +++ b/bench/native/validate_strategies.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python3 +"""Verify recovery, live edits, and reference fallbacks across execution methods.""" +import argparse +from contextlib import closing +import ctypes as c +import json +import os +from pathlib import Path +import sys +import tempfile + +from run import compile_worker, final_state_digest, output, run +from strategies import VARIANTS +from fast import MODES +from validate import Store + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + for name in ['kvlang', 'frontend', 'backend', 'include', 'binaries', 'output']: + ap.add_argument('--' + name, type=Path, required=True) + ap.add_argument('--cpu', type=int, default=24) + ap.add_argument('--variants', nargs='+', choices=[*VARIANTS[:-1], *MODES], default=VARIANTS[:-1]) + args = ap.parse_args() + os.environ.update(KVSPACE_BACKEND_PATH=str(args.backend), LOG_LEVEL='warn') + env = dict(os.environ) + variants = args.variants + if 'aot' not in variants or len(set(variants)) != len(variants): + ap.error('--variants must include aot and contain no duplicates') + report = {'suites': {}, 'cross_method_restarts': 0, 'live_edit_groups': 0, + 'prepared_call_replays': 0, 'address_cache_groups': 0} + for variant in variants: + command = [sys.executable, Path(__file__).with_name('validate.py')] + for name in ['kvlang', 'frontend', 'backend', 'include']: + command += ['--' + name, getattr(args, name)] + command += ['--binaries', args.binaries / variant, '--cpu', args.cpu] + if variant != 'aot': + command += ['--strategy', variant] + result, _ = run(command, env, args.cpu) + report['suites'][variant] = json.loads(result.stdout.splitlines()[-1]) + print(variant, report['suites'][variant], flush=True) + + with tempfile.TemporaryDirectory(prefix='strategy-recovery-') as td: + dsn = 'shm://' + td + '/store' + + def worker(variant, case, action, *values, expected=0): + return run([args.binaries / variant / case, dsn, action, *values], env, args.cpu, expected)[0] + + worker('aot', 'fib', 'init', 10) + worker('aot', 'fib', 'run') + reference = final_state_digest(args.frontend, dsn) + for start in variants: + for finish in variants: + worker(start, 'fib', 'init', 10) + worker(start, 'fib', 'run', 100, expected=75) + result = worker(finish, 'fib', 'run') + if output(result)[1] != 55 or final_state_digest(args.frontend, dsn) != reference: + raise AssertionError(f'cross-method mismatch: {start}/{finish}') + report['cross_method_restarts'] += 1 + + schema = json.loads((args.binaries / 'aot/fib.schema.json').read_text()) + child = schema['stride'] + patches = [(child + j, 0) for j in range(2, child, 2)] + patches += [(child, schema['functions']['fib']['id']), (child + 1, 2), + (child + 4, 3), (child + 5, 4), (child + 2, 3), (child + 3, 2)] + for variant in variants: + worker('aot', 'fib', 'init', 10) + with closing(Store(args.frontend, dsn)) as store: + frames, journal = store.view('frames'), store.view('journal') + journal[1:3] = [1, 1] + for i, (index, value) in enumerate(patches): + journal[3 + 2 * i:5 + 2 * i] = [index, value] + if i % 2 == 0: + frames[index] = value + store.view('pc', c.c_uint8)[-7] = ord('x') + journal[0] = len(patches) + 1 + if output(worker(variant, 'fib', 'run'))[1] != 55 or final_state_digest(args.frontend, dsn) != reference: + raise AssertionError('partial call replay mismatch: ' + variant) + report['prepared_call_replays'] += 1 + + for fault in ['read_reference', 'write_reference', 'cycle', 'invalid_write', 'constant', 'pc', 'argument']: + final = set() + for variant in variants: + worker('aot', 'iops', 'init', 6) + worker('aot', 'iops', 'run', 1, expected=75) + with closing(Store(args.frontend, dsn)) as store: + frames = store.view('frames') + schema = json.loads((args.binaries / 'aot/iops.schema.json').read_text()) + child = schema['stride'] + spare = (256 - 1) * child + 2 + # Modify references only after a worker has stopped. + if fault == 'read_reference': + frames[spare:spare + 2] = [1, 4] + frames[2:4] = [3, spare] + elif fault == 'write_reference': + target = child + 2 + 2 * schema['functions']['iops']['slots']['i'] + frames[spare:spare + 2] = [0, 0] + frames[target:target + 2] = [3, spare] + elif fault == 'cycle': + frames[2:4] = [3, 2] + elif fault == 'invalid_write': + target = child + 2 + 2 * schema['functions']['iops']['slots']['i'] + frames[target:target + 2] = [3, (1 << 64) - 1] + elif fault == 'constant': + index = schema['constants'].index([1, 0]) + store.view('constants')[index * 2 + 1] = 5 + elif fault == 'pc': + store.view('pc', c.c_uint8)[-7:-3] = b'0009' + else: + frames[3] = 4 + invalid = fault in ('cycle', 'invalid_write', 'pc') + result = worker(variant, 'iops', 'run', expected=4 if invalid else 0) + if not invalid: + expected = 4 if fault in ('read_reference', 'argument') else 11 if fault == 'constant' else 6 + if output(result)[1] != expected: + raise AssertionError(f'live edit mismatch: {variant}/{fault}') + final.add(final_state_digest(args.frontend, dsn)) + if len(final) != 1: + raise AssertionError('live edit KV state mismatch: ' + fault) + report['live_edit_groups'] += 1 + + source = Path(td) / 'aliases.kv' + source.write_text('''rwfunc update(n:int64) -> (r:int64) { + n + 1 -> r + n + 2 -> r +} +rwfunc changed(n:int64) -> (r:int64) { + 10 -> x + 20 -> y + update(x) -> x + update(y) -> y + x + y -> r +} +rwfunc descend(n:int64, k:int64) -> (r:int64) { + if (k == 0) { n -> r } else { descend(n, k - 1) -> r } +} +rwfunc deep(n:int64) -> (r:int64) { descend(n, 12) -> r } +rwfunc leaf(n:int64) -> (r:int64) { n + 1 -> r } +rwfunc relay(n:int64, flag:int64) -> (r:int64) { + if (flag == 1) { leaf(n) -> r } else { n + 2 -> r } +} +rwfunc forward(n:int64) -> (r:int64) { + 10 -> x + 20 -> y + relay(x, 1) -> a + relay(y, 0) -> b + n + a + b -> r +} +''') + for case, expected in [('changed', 36), ('deep', 7), ('forward', 53)]: + states = set() + for variant in variants: + args.strategy = None if variant == 'aot' else variant + binary = args.binaries / variant / case + compile_worker(args, source, case, binary) + worker(variant, case, 'init', 7) + if case == 'forward': + schema = json.loads(binary.with_suffix('.schema.json').read_text()) + with closing(Store(args.frontend, dsn)) as store: + store.view('frames')[2:4] = [3, 2 * schema['stride'] + 2] + if output(worker(variant, case, 'run'))[1] != expected: + raise AssertionError('address-cache mismatch: ' + variant + '/' + case) + states.add(final_state_digest(args.frontend, dsn)) + if len(states) != 1: + raise AssertionError('address-cache KV state mismatch: ' + case) + report['address_cache_groups'] += 1 + args.output.write_text(json.dumps(report, indent=2) + '\n') + print(json.dumps(report, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/bench/native/worker.c.in b/bench/native/worker.c.in new file mode 100644 index 00000000..09eadd60 --- /dev/null +++ b/bench/native/worker.c.in @@ -0,0 +1,271 @@ +#define _POSIX_C_SOURCE 200809L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DEPTH 256 +#define STRIDE @STRIDE@ +#define ARG_COUNT @ARGS@ +#define JOURNAL_CAP (2 * STRIDE) +#define JOURNAL_WORDS (3 + 2 * JOURNAL_CAP) +#define ROOT "/vthread/native" +#define PC_KEY ROOT "/‥pc" +#define STATE_KEY ROOT "/‥frames" +#define CONST_KEY ROOT "/‥constants" +#define STATUS_KEY ROOT "/‥status" +#define JOURNAL_KEY ROOT "/‥journal" +static const uint64_t initial_constants[] = {@CONSTANTS@}; +static const char initial_pc[] = ROOT "/[000]/[0001,0]"; +static const char program[] = "@PROGRAM@"; +#define DEPTH_POS (sizeof(ROOT) + 1) +#define ROW_POS (DEPTH_POS + 6) + +typedef struct { uint64_t value, tag; } cell_t; + +static inline cell_t load_constant(volatile uint64_t *constants, size_t index) { + uint64_t tag = constants[index * 2], value = constants[index * 2 + 1]; + if (tag == 1 || (tag == 2 && value <= 1)) return (cell_t){value, tag}; + return (cell_t){0, 0}; +} + +static cell_t load_cell(volatile uint64_t *state, size_t index) { + for (int hops = 0; hops < DEPTH; hops++) { + if (index >= DEPTH * STRIDE - 1 || index % STRIDE < 2 || (index % STRIDE - 2) % 2) + break; + uint64_t tag = state[index], value = state[index + 1]; + if (tag == 1 || (tag == 2 && value <= 1)) return (cell_t){value, tag}; + if (tag != 3) break; + index = value; + } + return (cell_t){0, 0}; +} + +static void stage(volatile uint64_t *journal, unsigned *count, size_t index, uint64_t value) { + journal[3 + *count * 2] = index; + journal[4 + *count * 2] = value; + ++*count; +} + +static int store_cell(volatile uint64_t *state, volatile uint64_t *journal, unsigned *count, + size_t index, cell_t value) { + for (int hops = 0; hops < DEPTH; hops++) { + if (index >= DEPTH * STRIDE - 1 || index % STRIDE < 2 || (index % STRIDE - 2) % 2) + return -1; + if (state[index] != 3) { + if (state[index] > 3) return -1; + stage(journal, count, index + 1, value.value); + stage(journal, count, index, value.tag); + return 0; + } + index = state[index + 1]; + } + return -1; +} + +static int set_string(void *h, const char *key, const char *s) { + uint8_t *wire = NULL; + uint32_t len = 0; + char err[256]; + if (kvspaceNewChar((const uint8_t *)s, strlen(s), &wire, &len)) return -1; + int rc = kvspaceSetValue(h, key, wire, len, 0, 0, err, sizeof err); + free(wire); + return rc; +} + +static int fail(void *h, const char *message) { + set_string(h, ROOT "/‥error", message); + set_string(h, STATUS_KEY, "error"); + return -1; +} + +static int tensor(void *h, const char *key, const uint64_t *data, int32_t size) { + uint8_t *wire = NULL; + uint32_t len = 0; + char err[256]; + if (kvspaceTlvEncode("uint64", (const uint8_t *)data, size * 8, &size, 1, &wire, &len)) return -1; + int rc = kvspaceSetValue(h, key, wire, len, 0, 0, err, sizeof err); + free(wire); + return rc; +} + +static uint8_t *body(void *h, const char *key, const char *type, uint32_t expected) { + uint8_t *wire = NULL, *out = NULL; + uint32_t len = 0; + kvspaceHead_t head; + char err[256]; + if (kvspaceGet(h, key, 0, &wire, &len) || !wire || + kvspaceDecodeHead(wire, len, &head) || strcmp(head.langtype, type) || + head.body_len != (int32_t)expected || + kvspaceWriteInPlace(h, key, 0, expected, &out, err, sizeof err)) return NULL; + return out; +} + +static unsigned digits(volatile uint8_t *pc, int offset, int width) { + unsigned v = 0; + for (int i = 0; i < width; i++) { + uint8_t digit = pc[offset + i]; + if (digit < '0' || digit > '9') return UINT32_MAX; + v = v * 10 + digit - '0'; + } + return v; +} + +static void set_pc(volatile uint8_t *pc, unsigned depth, unsigned row) { + for (int i = 2; i >= 0; i--) { pc[DEPTH_POS + i] = '0' + depth % 10; depth /= 10; } + for (int i = 3; i >= 0; i--) { pc[ROW_POS + i] = '0' + row % 10; row /= 10; } +} + +static int replay(void *h, volatile uint64_t *state, volatile uint64_t *journal, volatile uint8_t *pc) { + uint64_t marker = atomic_load_explicit((_Atomic uint64_t *)journal, memory_order_acquire); + if (!marker) return 0; + if (marker > JOURNAL_CAP + 1 || journal[1] >= DEPTH || journal[2] >= 10000 || + (!journal[2] && journal[1])) return fail(h, "invalid journal"); + for (unsigned i = 0; i < marker - 1; i++) + if (journal[3 + i * 2] >= DEPTH * STRIDE) return fail(h, "invalid journal index"); + for (unsigned i = 0; i < marker - 1; i++) + state[journal[3 + i * 2]] = journal[4 + i * 2]; + set_pc(pc, journal[1], journal[2]); + atomic_store_explicit((_Atomic uint64_t *)journal, 0, memory_order_release); + return 0; +} + +static int commit(void *h, volatile uint64_t *state, volatile uint64_t *journal, + volatile uint8_t *pc, unsigned count, uint64_t depth, uint64_t row) { + if (count > JOURNAL_CAP || depth >= DEPTH || row >= 10000 || (!row && depth)) + return fail(h, "invalid next PC"); + journal[1] = depth; + journal[2] = row; + /* Publish redo before changing live state or PC. */ + atomic_store_explicit((_Atomic uint64_t *)journal, count + 1, memory_order_release); + return replay(h, state, journal, pc); +} + +static uint64_t now(void) { + struct timespec t; + clock_gettime(CLOCK_MONOTONIC, &t); + return (uint64_t)t.tv_sec * 1000000000 + t.tv_nsec; +} + +#if defined(BENCH_KEY_LOOKUP) +static uint8_t *lookup_body(void *h, const char *key, uint32_t expected) { + uint8_t *wire = NULL; + uint32_t len = 0; + if (kvspaceGet(h, key, 0, &wire, &len) || !wire || !len || wire[0] > 15) + return NULL; + uint32_t headlen = UINT32_C(1) << wire[0]; + if (len < headlen || len - headlen != expected) return NULL; + return wire + headlen; +} +#endif + +static int execute(void *h, volatile uint64_t *state, volatile uint64_t *constants __attribute__((unused)), + volatile uint64_t *journal, volatile uint8_t *pc, + volatile uint8_t *status, uint64_t budget) { + uint64_t steps = 0; + for (;;) { +#if defined(BENCH_KEY_LOOKUP) + pc = lookup_body(h, PC_KEY, strlen(initial_pc)); +#if BENCH_KEY_LOOKUP == 2 + state = (volatile uint64_t *)lookup_body(h, STATE_KEY, DEPTH * STRIDE * 8); + constants = (volatile uint64_t *)lookup_body(h, CONST_KEY, sizeof(initial_constants)); + journal = (volatile uint64_t *)lookup_body(h, JOURNAL_KEY, JOURNAL_WORDS * 8); + status = lookup_body(h, STATUS_KEY, 7); +#endif + if (!pc || !state || !constants || !journal || !status) + return fail(h, "invalid state lookup"); +#endif + if (status[0] != 'r' || status[1] != 'u' || status[2] != 'n' || + status[3] != 'n' || status[4] != 'i' || status[5] != 'n' || status[6] != 'g') + return 1; + unsigned depth = digits(pc, DEPTH_POS, 3), row = digits(pc, ROW_POS, 4), count = 0; + if (depth >= DEPTH || row >= 10000 || (!row && depth)) return fail(h, "invalid PC"); + if (!row) return 0; + size_t base = depth * STRIDE; + switch (state[base]) { +@DISPATCH@ + default: return fail(h, "invalid function"); + } + if (budget && ++steps == budget) _exit(75); + } +} + +static int number(const char *s, int64_t *out) { + char *end; + errno = 0; + *out = strtoll(s, &end, 10); + return !*s || *end || errno; +} + +int main(int argc, char **argv) { + if (argc < 3 || strncmp(argv[1], "shm:///", 7)) return 2; + char lock_path[4096]; + if (snprintf(lock_path, sizeof lock_path, "%s.native.lock", argv[1] + 6) >= (int)sizeof lock_path) return 2; + int lock = open(lock_path, O_CREAT | O_RDWR | O_CLOEXEC, 0600); + if (lock < 0 || flock(lock, LOCK_EX | LOCK_NB)) return 6; + void *h = kvspaceConnect(argv[1]); + if (!h) return 3; + int result = 0; + if (!strcmp(argv[2], "init")) { + if (argc != 3 + ARG_COUNT) { result = 2; goto done; } + uint64_t *data = calloc(DEPTH * STRIDE, 8), journal[JOURNAL_WORDS] = {0}; + if (!data) { result = 3; goto done; } + for (int i = 0; i < ARG_COUNT; i++) { + int64_t value; + if (number(argv[3 + i], &value)) { free(data); result = 2; goto done; } + data[2 + i * 2] = 1; + data[3 + i * 2] = (uint64_t)value; + } + result = set_string(h, STATUS_KEY, "initial") || tensor(h, STATE_KEY, data, DEPTH * STRIDE) || + tensor(h, CONST_KEY, initial_constants, sizeof(initial_constants) / sizeof(*initial_constants)) || + tensor(h, JOURNAL_KEY, journal, JOURNAL_WORDS) || + set_string(h, ROOT "/‥program", program) || set_string(h, PC_KEY, initial_pc) || + set_string(h, STATUS_KEY, "running") ? 3 : 0; + free(data); + goto done; + } + int64_t parsed = 0; + if (strcmp(argv[2], "run") || argc > 4 || + (argc == 4 && (number(argv[3], &parsed) || parsed <= 0))) { result = 2; goto done; } + char frame_type[64], const_type[64], journal_type[64], pc_type[64]; + snprintf(frame_type, sizeof frame_type, "[%u]uint64", DEPTH * STRIDE); + snprintf(const_type, sizeof const_type, "[%zu]uint64", sizeof(initial_constants) / sizeof(*initial_constants)); + snprintf(journal_type, sizeof journal_type, "[%u]uint64", JOURNAL_WORDS); + snprintf(pc_type, sizeof pc_type, "[%zu]char/utf8", strlen(initial_pc)); + uint8_t *identity = body(h, ROOT "/‥program", "[64]char/utf8", 64); + volatile uint64_t *state = (volatile uint64_t *)body(h, STATE_KEY, frame_type, DEPTH * STRIDE * 8); + volatile uint64_t *constants = (volatile uint64_t *)body(h, CONST_KEY, const_type, sizeof(initial_constants)); + volatile uint64_t *journal = (volatile uint64_t *)body(h, JOURNAL_KEY, journal_type, JOURNAL_WORDS * 8); + volatile uint8_t *pc = body(h, PC_KEY, pc_type, strlen(initial_pc)); + volatile uint8_t *status = body(h, STATUS_KEY, "[7]char/utf8", 7); + if (!identity || memcmp(identity, program, 64) || !state || !constants || !journal || !pc || !status || + !atomic_is_lock_free((_Atomic uint64_t *)journal)) { + fputs("invalid store schema or program\n", stderr); result = 4; goto done; + } + if (replay(h, state, journal, pc)) { result = 4; goto done; } + for (unsigned i = 0; i < strlen(initial_pc); i++) { + if ((i >= DEPTH_POS && i < DEPTH_POS + 3) || (i >= ROW_POS && i < ROW_POS + 4)) continue; + if (pc[i] != (uint8_t)initial_pc[i]) { fail(h, "invalid PC path"); result = 4; goto done; } + } + uint64_t start = now(); + int rc = execute(h, state, constants, journal, pc, status, parsed); + uint64_t elapsed = now() - start; + result = rc < 0 ? 4 : rc; + if (!rc) { + cell_t value = load_cell(state, @RESULT@); + if (value.tag != 1) { fail(h, "invalid result"); result = 4; goto done; } + printf("result = %lld\n__bench_ns: %llu\n", (long long)(int64_t)value.value, (unsigned long long)elapsed); + if (set_string(h, STATUS_KEY, "ok")) result = 4; + } +done: + kvspaceClose(h); + close(lock); + return result; +}