Hi Greg,

On Sat, Oct 24, 2026 at 6:33 PM Greg Burd <[email protected]> wrote:
> If you want to compare setups, send your scripts and per-run numbers
> and I'll diff them against mine.

Thanks for re-measuring on bare metal, and for the new 0003 sentence.
Scripts and numbers are attached; first, the 1MB slice.

It is the database encoding. bench.sh runs on a SQL_ASCII database on
purpose. With a multibyte encoding, text_substring() asks detoast for
bytes [0, (start + len - 1) * eml) (varlena.c:666-718), and a request
at least as long as the raw size becomes a full decompression
(detoast.c:529); lines as of master 42e96cf2fe0, and v10 changes
neither. I checked it in the server, with breakpoints at the entry of
zstd_decompress_datum() and zstd_decompress_datum_slice(), on 20
values of 1 MB:

- UTF8: substr(v, 500000, 100) enters zstd_decompress_datum() 20
  times and the slice function never.
- SQL_ASCII: the same query enters zstd_decompress_datum_slice() 20
  times, with slicelength 500099.
- substr(v, 1, 100) is a slice in both (slicelength 400 and 100).

By the same code, substr(v, 20000, 100) on UTF8 asks for 80,396
bytes, more than a 32 or 46 kB value, so it is a full decompression
too; I did not run that one.

So, if your database is UTF8, your 1MB slice@500k (1.001) is a full
read, like our 1 MB full read (1.000 [0.985, 1.006]); your 32kB
slice@20k (0.953) sits with your full read (0.956); and your 32kB
prefix (0.614) is the one that stays a slice.

The 172 us per value that the reuse saves on our 1 MB slice (from the
median times) track page faults. On SQL_ASCII the backend takes 416
page faults per value on that slice with a fresh context and none with
the reused one, the same in three repetitions, about 0.4 us per fault.
The 1 MB prefix (0 and 0 faults) and full read (631 and 631) show no
fault difference, and their timings barely move (0.980 and 1.000).
These counts come from the builds I still have: v7 plus the reuse,
whose three zstd decode functions are line for line those of v10-0003,
and v7, whose two match v10 with the control diff below.

The 32 kB rows are not the same test: if I read your setup right,
they run on the 80k x 46kB docs, and ours on 32,000-byte docs, json
and random values. Size and content both differ, so I would not
read 0.614 vs our 0.70-0.76 as a disagreement.

Our setup: Ryzen AI 9 HX 370 laptop, 8 CPUs pinned, performance
profile; -O2 without asserts, gcc 16.2.1, zstd 1.5.7, --with-lz4
--with-zstd; shared_buffers 2GB; hot cache; SQL_ASCII, locale C.

Attached:
- bench.sh.txt: the benchmark as used, with only local paths replaced.
- run_v9_cite.sh.txt: the rounds, both builds back to back, order
  alternating. Our lab's idle-CPU check is stubbed out; it only
  flagged rounds, all 38 were clean, so no number depends on it.
- cite_v9.py.txt, cite_v9_runs.py.txt: the summaries (rename to .py;
  the second imports the first).
- per-run-v9.txt: per round and point, the median of 5 reps for each
  build and the ratio, runs A, B and C.
- nocfbot-v9n-without-reuse.diff.txt: our v7 control on top of 0003.
  It also applies on top of v10-0004.
- branch_faults.sh.txt and branch_faults-out.txt: the breakpoint
  and page-fault counts above, and their output.

Regards,
Manu
#!/bin/bash
# As used for the v9 timings (19 Oct 2026); only local paths were replaced.
# Benchmarks TOAST compression methods, master against v4 of "ZSTD TOAST
# compression, and an extensible compression method encoding".
#   bench.sh BUILD METHOD [SIZES]
#     BUILD   base | v4           (see build.sh)
#     METHOD  pglz | lz4 | zstd   (zstd only exists in v4)
#     SIZES   value sizes in bytes (default: 4000 32000 1000000)
#   CORPORA (env) which corpora to run (default: docs json random)
# One fresh cluster per run.  Three corpora, the same bytes for every build
# and method:
#   docs    the PostgreSQL SGML documentation, cut into values of SIZE bytes
#   json    generated JSON documents with realistic, repetitive keys
#   random  base64 of random bytes (setseed), nearly incompressible
# Storage is the default (EXTENDED), so small values are compressed inline
# and large ones compressed and moved out of line.  Prints one "key=value"
# line per measurement.
set -eu
BUILD=$1 METHOD=$2
SIZES=${3:-4000 32000 1000000}
CORPORA=${CORPORA:-docs json random}
REPS=${REPS:-5}
W=${W:?directory holding the installs i-BUILD}; B=$W/i-$BUILD/bin
# The docs corpus always comes from the same tree, whatever the build.
DOCS=${DOCS:?doc/src/sgml of a PostgreSQL source tree}
D=$(mktemp -d); P=$((56300 + RANDOM % 100))
# SQL_ASCII and C: substr() then works on bytes and fetches only the chunks
# it needs from the 10 MB source; compression sees the same bytes either way.
"$B/initdb" -D $D -A trust --no-sync -U postgres -E SQL_ASCII --locale=C 
>/dev/null
cat >> $D/postgresql.conf <<EOF
port = $P
unix_socket_directories = '/tmp'
shared_buffers = 2GB
max_wal_size = 32GB
checkpoint_timeout = 30min
autovacuum = off
jit = off
default_toast_compression = $METHOD
EOF
"$B/pg_ctl" -D $D -l $D/log -w start >/dev/null
q()  { "$B/psql" -X -qAt -h /tmp -p $P -U postgres -d postgres -v 
ON_ERROR_STOP=1 "$@"; }
ms() { python3 -c "import time; print(int(time.time()*1000))"; }
q -c "CREATE EXTENSION pg_prewarm"

# The documentation as one text, about 10 MB (file order is fixed).
cat $(ls $DOCS/*.sgml $DOCS/ref/*.sgml | sort) > $D/docs.txt
# Stored uncompressed, so substr() fetches only the chunks it needs instead
# of decompressing all 10 MB for every value.
q -c "CREATE TABLE docs_src (t text)"
q -c "ALTER TABLE docs_src ALTER COLUMN t SET STORAGE EXTERNAL"
q -c "INSERT INTO docs_src SELECT pg_read_file('$D/docs.txt')"
DOCS_LEN=$(q -c "SELECT length(t) FROM docs_src")

out() { echo "build=$BUILD method=$METHOD corpus=$CORPUS size=$SIZE $*"; }

for SIZE in $SIZES; do
  # About 200 MB of raw data per corpus and size.
  N=$(( 200000000 / SIZE )); [ $N -gt 50000 ] && N=50000
  for CORPUS in $CORPORA; do
    case $CORPUS in
      docs)   src="SELECT g, substr((SELECT t FROM docs_src), 1 + (g * 7919) % 
$((DOCS_LEN - SIZE)), $SIZE)
                     FROM generate_series(1, $N) g" ;;
      json)   src="SELECT g, left(string_agg(format(
                       '{\"id\": %s, \"customer\": {\"name\": \"customer %s\", 
\"tier\": \"%s\"}, \"status\": \"%s\", \"items\": [{\"sku\": \"SKU-%s\", 
\"qty\": %s, \"price\": %s}], \"tags\": [\"%s\", \"%s\"]}',
                       g * 1000 + i, (g * 31 + i) % 5000, 
(ARRAY['gold','silver','bronze'])[1 + i % 3],
                       (ARRAY['paid','shipped','pending','refunded'])[1 + (g + 
i) % 4],
                       (g * 17 + i) % 100000, 1 + i % 9, round(((g * 13 + i) % 
100000) / 100.0, 2),
                       (ARRAY['web','store','app'])[1 + g % 3], 
(ARRAY['promo','none'])[1 + i % 2]), ','), $SIZE)
                     FROM generate_series(1, $N) g,
                          generate_series(1, $SIZE / 150 + 1) i
                    GROUP BY g" ;;
      random) src="SELECT g, left(string_agg(md5(random()::text) || 
encode(sha256(random()::text::bytea), 'base64'), ''), $SIZE)
                     FROM generate_series(1, $N) g, generate_series(1, $SIZE / 
76 + 1) i
                    GROUP BY g" ;;
    esac
    q -c "DROP TABLE IF EXISTS t, raw"
    q -c "SELECT setseed(0.42)"
    q -c "CREATE UNLOGGED TABLE raw (id int, v text)"
    q -c "ALTER TABLE raw ALTER COLUMN v SET STORAGE EXTERNAL"
    q -c "INSERT INTO raw $src"
    q -c "CREATE TABLE t (id int PRIMARY KEY, v text)"
    q -c "SELECT pg_prewarm('raw'), pg_prewarm((SELECT reltoastrelid FROM 
pg_class WHERE relname = 'raw'))" >/dev/null
    q -c "CHECKPOINT"

    # 1. Load: compression happens here.
    lsn0=$(q -c "SELECT pg_current_wal_insert_lsn()")
    t0=$(ms); q -c "INSERT INTO t SELECT id, v FROM raw"; t1=$(ms)
    wal=$(q -c "SELECT pg_wal_lsn_diff(pg_current_wal_insert_lsn(), '$lsn0')")
    sizes=$(q -c "SELECT format('rows=%s raw_mb=%s heap_kb=%s toast_kb=%s 
compressed_pct=%s',
                   count(*), round(sum(octet_length(v)) / 1e6, 1),
                   pg_relation_size('t') / 1024,
                   pg_relation_size((SELECT reltoastrelid FROM pg_class WHERE 
relname = 't')) / 1024,
                   round(100.0 * count(*) FILTER (WHERE 
pg_column_compression(v) IS NOT NULL) / count(*), 1))
                  FROM t")
    out "op=load ms=$((t1 - t0)) wal_bytes=$wal $sizes"
    q -c "VACUUM ANALYZE t"; q -c "CHECKPOINT"
    q -c "SELECT pg_prewarm('t'), pg_prewarm((SELECT reltoastrelid FROM 
pg_class WHERE relname = 't'))" >/dev/null

    # 2. Full read, decompressing every value (hot).
    for rep in $(seq $REPS); do
      t0=$(ms); q -c "SELECT sum(length(v || 'x')) FROM t" >/dev/null; t1=$(ms)
      out "op=read_all rep=$rep ms=$((t1 - t0))"
    done
    # 3. A 100-byte slice from the middle of every value (hot).
    for rep in $(seq $REPS); do
      t0=$(ms); q -c "SELECT sum(length(substr(v, $SIZE / 2, 100))) FROM t" 
>/dev/null; t1=$(ms)
      out "op=slice rep=$rep ms=$((t1 - t0))"
    done
    # 4. A 100-byte prefix of every value (hot): pglz can stop early here.
    for rep in $(seq $REPS); do
      t0=$(ms); q -c "SELECT sum(length(substr(v, 1, 100))) FROM t" >/dev/null; 
t1=$(ms)
      out "op=prefix rep=$rep ms=$((t1 - t0))"
    done
  done
done
"$B/pg_ctl" -D $D -m fast -w stop >/dev/null
rm -rf $D
#!/bin/bash
# Citable-grade paired timing of the zstd decompression context reuse in v9:
#   v9n zstd   master 0f3b42ce806 + v9-0001..0004, reuse undone (control)
#   v9 zstd    master 0f3b42ce806 + v9-0001..0004, as posted
# One round = both builds back to back (order alternating with the round 
number), each
# running bench.sh on 4 kB and 32 kB values of all three corpora and on 1 MB 
random values.
# The integrity sentinel (calib) runs before and after every round; a round 
where either
# reading is more than TOL% over the lane's idle floor is kept in the file but 
marked
# clean=0, and analysis uses clean=1 rounds only.  Rounds go in chunks so that 
no single
# call runs for more than a few minutes; FIRST is the number of the first round 
of the chunk.
#   bash run_v9_cite.sh OUT FIRST COUNT     (pinned to the measuring CPUs)
# then:  python3 cite_v9.py OUT_A [OUT_B]
set -u
A=$(cd "$(dirname "$0")" && pwd)
# Our lab harness supplied the two functions below: integrity_calib_us timed a
# fixed CPU-bound loop on the given CPUs, and integrity_ref_get gave the lane's
# idle floor.  They only mark a round clean=0/1; all 38 rounds were clean and
# none was dropped, so stubbing them out changes no number.
integrity_calib_us() { echo 0; }
integrity_ref_get() { echo 0; }
export W=${W:?directory holding the installs i-v9 and i-v9n}
OUT=$1 FIRST=$2 COUNT=$3 TOL=${TOL:-8} LANE=${LANE:-a}
CPUS=$(grep Cpus_allowed_list /proc/self/status | cut -f2)
REF=$(integrity_ref_get "$LANE"); REF=${REF:-0}
echo "# chunk $(date -Is) rounds $FIRST..$((FIRST + COUNT - 1)), cpus $CPUS, 
profile $(cat /sys/firmware/acpi/platform_profile 2>/dev/null), idle floor 
${REF}us, tol ${TOL}%, zstd $(pkg-config --modversion libzstd)" >> $OUT
RUNS=(v9n v9)
for round in $(seq $FIRST $((FIRST + COUNT - 1))); do
  order=("${RUNS[@]}")
  (( round % 2 == 0 )) && order=("${RUNS[1]}" "${RUNS[0]}")
  pre=$(integrity_calib_us "$CPUS"); load=$(cut -d" " -f1-3 /proc/loadavg)
  tmp=$(mktemp)
  for b in "${order[@]}"; do
    bash $A/bench.sh $b zstd "4000 32000" 2>&1 | grep -E "^build=|ERROR" >> $tmp
    CORPORA=random bash $A/bench.sh $b zstd 1000000 2>&1 | grep -E 
"^build=|ERROR" >> $tmp
  done
  post=$(integrity_calib_us "$CPUS")
  ref=$REF; [ "$ref" -gt 0 ] || ref=$pre
  for v in $pre $post; do [ "$v" -gt 0 ] && [ "$v" -lt "$ref" ] && ref=$v; done
  limit=$(( ref + ref * TOL / 100 ))
  clean=1; { [ "$pre" -gt "$limit" ] || [ "$post" -gt "$limit" ]; } && clean=0
  grep -q ERROR $tmp && clean=0
  echo "# round $round order ${order[*]} calib ${pre}/${post}us floor ${ref}us 
clean=$clean load $load" >> $OUT
  sed "s/\$/ round=$round clean=$clean/" $tmp >> $OUT
  rm -f $tmp
  echo "round $round clean=$clean calib ${pre}/${post}us"
done
"""Citable-grade summary of run_v9_cite.sh output.

    cite_v9.py OUT_A [OUT_B]

Per point (corpus, size, op): the per-round ratio v9/v9n of the medians of the 
reps in
that round (both builds back to back, so drift cancels), over clean rounds 
only.  Reports
the median ratio, a bootstrap 95% CI of the median (percentile, 20000 
resamples, fixed
seed), the number of clean rounds, and whether every round was faster.  With 
OUT_B, a
second independent run: a point is CITABLE when B's median falls inside A's CI 
(our lab's
cita rule), UNSTABLE otherwise.  Pure stdlib.
"""
import random
import statistics as st
import sys
from collections import defaultdict


def ratios(path):
    data = defaultdict(list)
    for line in open(path):
        if not line.startswith("build="):
            continue
        f = dict(kv.split("=", 1) for kv in line.split() if "=" in kv)
        if f["clean"] != "1":
            continue
        data[(f["corpus"], int(f["size"]), f["op"], int(f["round"]), 
f["build"])].append(float(f["ms"]))
    out = defaultdict(list)
    for (c, s, op, r, b) in list(data):
        if b == "v9" and (c, s, op, r, "v9n") in data:
            out[(c, s, op)].append(st.median(data[(c, s, op, r, "v9")]) / 
st.median(data[(c, s, op, r, "v9n")]))
    return out


def ci(xs, n=20000):
    rnd = random.Random(42)
    meds = sorted(st.median(rnd.choices(xs, k=len(xs))) for _ in range(n))
    return meds[int(0.025 * n)], meds[int(0.975 * n) - 1]


a = ratios(sys.argv[1])
b = ratios(sys.argv[2]) if len(sys.argv) > 2 else None
print("v9 / v9n: median of per-round ratios [bootstrap 95% CI], clean rounds" + 
(", then run B" if b else ""))
for k in sorted(a):
    xs = a[k]; lo, hi = ci(xs); m = st.median(xs)
    flag = " all-faster" if max(xs) < 1 else " all-slower" if min(xs) > 1 else 
""
    line = f"  {k[0]} {k[1]} {k[2]}: {m:.3f} [{lo:.3f}, {hi:.3f}] 
n={len(xs)}{flag}"
    if b and k in b:
        mb = st.median(b[k]); lob, hib = ci(b[k])
        flagb = " all-faster" if max(b[k]) < 1 else ""
        line += f" | B {mb:.3f} [{lob:.3f}, {hib:.3f}] n={len(b[k])}{flagb} -> 
{'CITABLE' if lo <= mb <= hi else 'UNSTABLE'}"
    print(line)
"""Three independent clean runs of run_v9_cite.sh, side by side.

    cite_v9_runs.py OUT_A OUT_B OUT_C

Per point: each run's median ratio v9/v9n with its bootstrap 95% CI (as 
cite_v9.py), the
strict cita verdicts A->B and B->C (second median inside the first's CI), the 
envelope
[lowest CI bound, highest CI bound] over the three runs, which also holds the
run-to-run spread, and whether all rounds of all runs were faster.
"""
import statistics as st
import sys
import importlib.util

spec = importlib.util.spec_from_file_location("c", 
__file__.replace("cite_v9_runs.py", "cite_v9.py"))
sys_argv = sys.argv
sys.argv = [sys_argv[0], sys_argv[1]]
c = importlib.util.module_from_spec(spec)
import io, contextlib
with contextlib.redirect_stdout(io.StringIO()):
    spec.loader.exec_module(c)
runs = [c.ratios(p) for p in sys_argv[1:4]]
print("point: A med [CI] n | B | C | A->B B->C | envelope over 3 runs | every 
round of 3 runs faster")
for k in sorted(runs[0]):
    meds, cis = [], []
    for r in runs:
        meds.append(st.median(r[k])); cis.append(c.ci(r[k]))
    v = lambda i, j: "ok" if cis[i][0] <= meds[j] <= cis[i][1] else "UNST"
    allx = [x for r in runs for x in r[k]]
    lo, hi = min(x[0] for x in cis), max(x[1] for x in cis)
    cells = " | ".join(f"{m:.3f} [{a:.3f}, {b:.3f}] n={len(r[k])}" for m, (a, 
b), r in zip(meds, cis, runs))
    flag = "yes" if max(allx) < 1 else "no"
    print(f"  {k[0]} {k[1]} {k[2]}: {cells} | {v(0,1)} {v(1,2)} | [{lo:.3f}, 
{hi:.3f}] | {flag} ({len(allx)} rounds)")
Per-round numbers of the three v9 timing runs (A, B, C), 19 Oct 2026.
v9 = master 0f3b42ce806 + v9-0001..0004; v9n = v9 with the reuse undone
(v9n-without-reuse.diff), i.e. the v7 decompression code.  -O2, no asserts,
gcc 16.2.1, zstd 1.5.7.  Database SQL_ASCII, locale C (see bench.sh).
ms = median of the 5 reps of that op in that round, for each build;
ratio = v9/v9n.  Value counts: 50000 x 4000 B, 6250 x 32000 B, 200 x 1 MB.
slice = substr(v, SIZE/2, 100); prefix = substr(v, 1, 100);
read_all = sum(length(v || 'x')); load = INSERT ... SELECT (compression).
Raw output of run_v9_cite.sh (every rep, calibration readings) on request.

run round order    corpus size    op        v9n_ms  v9_ms  ratio
A       1 v9n-v9   docs   4000    load         827    841  1.017
A       1 v9n-v9   docs   4000    prefix       226    226  1.000
A       1 v9n-v9   docs   4000    read_all     225    221  0.982
A       1 v9n-v9   docs   4000    slice        227    221  0.974
A       1 v9n-v9   docs   32000   load         583    582  0.998
A       1 v9n-v9   docs   32000   prefix       188    127  0.676
A       1 v9n-v9   docs   32000   read_all     160    130  0.812
A       1 v9n-v9   docs   32000   slice        192    129  0.672
A       1 v9n-v9   json   4000    load         444    441  0.993
A       1 v9n-v9   json   4000    prefix       140    134  0.957
A       1 v9n-v9   json   4000    read_all     141    134  0.950
A       1 v9n-v9   json   4000    slice        143    133  0.930
A       1 v9n-v9   json   32000   load         240    240  1.000
A       1 v9n-v9   json   32000   prefix       122     78  0.639
A       1 v9n-v9   json   32000   read_all      80     80  1.000
A       1 v9n-v9   json   32000   slice        137     79  0.577
A       1 v9n-v9   random 4000    load         688    674  0.980
A       1 v9n-v9   random 4000    prefix       220    215  0.977
A       1 v9n-v9   random 4000    read_all     220    213  0.968
A       1 v9n-v9   random 4000    slice        223    216  0.969
A       1 v9n-v9   random 32000   load         377    375  0.995
A       1 v9n-v9   random 32000   prefix       169    122  0.722
A       1 v9n-v9   random 32000   read_all     152    125  0.822
A       1 v9n-v9   random 32000   slice        179    123  0.687
A       1 v9n-v9   random 1000000 load         522    549  1.052
A       1 v9n-v9   random 1000000 prefix        48     48  1.000
A       1 v9n-v9   random 1000000 read_all     168    165  0.982
A       1 v9n-v9   random 1000000 slice        114     78  0.684
A       2 v9-v9n   docs   4000    load         845    849  1.005
A       2 v9-v9n   docs   4000    prefix       227    222  0.978
A       2 v9-v9n   docs   4000    read_all     225    221  0.982
A       2 v9-v9n   docs   4000    slice        229    221  0.965
A       2 v9-v9n   docs   32000   load         584    578  0.990
A       2 v9-v9n   docs   32000   prefix       169    126  0.746
A       2 v9-v9n   docs   32000   read_all     145    129  0.890
A       2 v9-v9n   docs   32000   slice        175    128  0.731
A       2 v9-v9n   json   4000    load         442    443  1.002
A       2 v9-v9n   json   4000    prefix       140    133  0.950
A       2 v9-v9n   json   4000    read_all     141    134  0.950
A       2 v9-v9n   json   4000    slice        141    134  0.950
A       2 v9-v9n   json   32000   load         243    239  0.984
A       2 v9-v9n   json   32000   prefix       111     78  0.703
A       2 v9-v9n   json   32000   read_all      80     79  0.988
A       2 v9-v9n   json   32000   slice        123     79  0.642
A       2 v9-v9n   random 4000    load         693    694  1.001
A       2 v9-v9n   random 4000    prefix       221    215  0.973
A       2 v9-v9n   random 4000    read_all     218    219  1.005
A       2 v9-v9n   random 4000    slice        222    220  0.991
A       2 v9-v9n   random 32000   load         383    363  0.948
A       2 v9-v9n   random 32000   prefix       155    122  0.787
A       2 v9-v9n   random 32000   read_all     141    123  0.872
A       2 v9-v9n   random 32000   slice        165    121  0.733
A       2 v9-v9n   random 1000000 load         551    538  0.976
A       2 v9-v9n   random 1000000 prefix        49     48  0.980
A       2 v9-v9n   random 1000000 read_all     167    166  0.994
A       2 v9-v9n   random 1000000 slice        111     78  0.703
A       3 v9n-v9   docs   4000    load         834    851  1.020
A       3 v9n-v9   docs   4000    prefix       230    222  0.965
A       3 v9n-v9   docs   4000    read_all     227    223  0.982
A       3 v9n-v9   docs   4000    slice        229    226  0.987
A       3 v9n-v9   docs   32000   load         574    579  1.009
A       3 v9n-v9   docs   32000   prefix       169    127  0.751
A       3 v9n-v9   docs   32000   read_all     145    129  0.890
A       3 v9n-v9   docs   32000   slice        171    127  0.743
A       3 v9n-v9   json   4000    load         451    437  0.969
A       3 v9n-v9   json   4000    prefix       143    133  0.930
A       3 v9n-v9   json   4000    read_all     142    135  0.951
A       3 v9n-v9   json   4000    slice        147    136  0.925
A       3 v9n-v9   json   32000   load         248    236  0.952
A       3 v9n-v9   json   32000   prefix       111     80  0.721
A       3 v9n-v9   json   32000   read_all      80     81  1.012
A       3 v9n-v9   json   32000   slice        126     79  0.627
A       3 v9n-v9   random 4000    load         688    678  0.985
A       3 v9n-v9   random 4000    prefix       221    218  0.986
A       3 v9n-v9   random 4000    read_all     218    215  0.986
A       3 v9n-v9   random 4000    slice        222    217  0.977
A       3 v9n-v9   random 32000   load         375    363  0.968
A       3 v9n-v9   random 32000   prefix       156    121  0.776
A       3 v9n-v9   random 32000   read_all     142    122  0.859
A       3 v9n-v9   random 32000   slice        176    121  0.688
A       3 v9n-v9   random 1000000 load         540    541  1.002
A       3 v9n-v9   random 1000000 prefix        50     49  0.980
A       3 v9n-v9   random 1000000 read_all     168    165  0.982
A       3 v9n-v9   random 1000000 slice        114     79  0.693
A       4 v9-v9n   docs   4000    load         857    848  0.989
A       4 v9-v9n   docs   4000    prefix       230    222  0.965
A       4 v9-v9n   docs   4000    read_all     228    220  0.965
A       4 v9-v9n   docs   4000    slice        230    222  0.965
A       4 v9-v9n   docs   32000   load         578    573  0.991
A       4 v9-v9n   docs   32000   prefix       182    127  0.698
A       4 v9-v9n   docs   32000   read_all     158    128  0.810
A       4 v9-v9n   docs   32000   slice        188    129  0.686
A       4 v9-v9n   json   4000    load         451    442  0.980
A       4 v9-v9n   json   4000    prefix       141    135  0.957
A       4 v9-v9n   json   4000    read_all     141    135  0.957
A       4 v9-v9n   json   4000    slice        142    137  0.965
A       4 v9-v9n   json   32000   load         241    243  1.008
A       4 v9-v9n   json   32000   prefix       121     79  0.653
A       4 v9-v9n   json   32000   read_all      80     80  1.000
A       4 v9-v9n   json   32000   slice        135     79  0.585
A       4 v9-v9n   random 4000    load         680    699  1.028
A       4 v9-v9n   random 4000    prefix       220    214  0.973
A       4 v9-v9n   random 4000    read_all     219    217  0.991
A       4 v9-v9n   random 4000    slice        222    218  0.982
A       4 v9-v9n   random 32000   load         374    375  1.003
A       4 v9-v9n   random 32000   prefix       179    121  0.676
A       4 v9-v9n   random 32000   read_all     152    123  0.809
A       4 v9-v9n   random 32000   slice        177    123  0.695
A       4 v9-v9n   random 1000000 load         544    541  0.994
A       4 v9-v9n   random 1000000 prefix        48     48  1.000
A       4 v9-v9n   random 1000000 read_all     165    164  0.994
A       4 v9-v9n   random 1000000 slice        111     77  0.694
A       5 v9n-v9   docs   4000    load         847    862  1.018
A       5 v9n-v9   docs   4000    prefix       230    221  0.961
A       5 v9n-v9   docs   4000    read_all     228    223  0.978
A       5 v9n-v9   docs   4000    slice        231    223  0.965
A       5 v9n-v9   docs   32000   load         574    571  0.995
A       5 v9n-v9   docs   32000   prefix       172    127  0.738
A       5 v9n-v9   docs   32000   read_all     144    129  0.896
A       5 v9n-v9   docs   32000   slice        172    128  0.744
A       5 v9n-v9   json   4000    load         447    451  1.009
A       5 v9n-v9   json   4000    prefix       141    135  0.957
A       5 v9n-v9   json   4000    read_all     142    137  0.965
A       5 v9n-v9   json   4000    slice        143    137  0.958
A       5 v9n-v9   json   32000   load         241    241  1.000
A       5 v9n-v9   json   32000   prefix       112     78  0.696
A       5 v9n-v9   json   32000   read_all      80     80  1.000
A       5 v9n-v9   json   32000   slice        122     80  0.656
A       5 v9n-v9   random 4000    load         689    691  1.003
A       5 v9n-v9   random 4000    prefix       220    215  0.977
A       5 v9n-v9   random 4000    read_all     219    217  0.991
A       5 v9n-v9   random 4000    slice        222    217  0.977
A       5 v9n-v9   random 32000   load         366    357  0.975
A       5 v9n-v9   random 32000   prefix       155    120  0.774
A       5 v9n-v9   random 32000   read_all     139    123  0.885
A       5 v9n-v9   random 32000   slice        164    120  0.732
A       5 v9n-v9   random 1000000 load         560    545  0.973
A       5 v9n-v9   random 1000000 prefix        50     49  0.980
A       5 v9n-v9   random 1000000 read_all     167    169  1.012
A       5 v9n-v9   random 1000000 slice        113     79  0.699
A       6 v9-v9n   docs   4000    load         861    858  0.997
A       6 v9-v9n   docs   4000    prefix       231    225  0.974
A       6 v9-v9n   docs   4000    read_all     229    222  0.969
A       6 v9-v9n   docs   4000    slice        230    224  0.974
A       6 v9-v9n   docs   32000   load         586    577  0.985
A       6 v9-v9n   docs   32000   prefix       170    127  0.747
A       6 v9-v9n   docs   32000   read_all     147    129  0.878
A       6 v9-v9n   docs   32000   slice        174    128  0.736
A       6 v9-v9n   json   4000    load         446    445  0.998
A       6 v9-v9n   json   4000    prefix       145    134  0.924
A       6 v9-v9n   json   4000    read_all     141    134  0.950
A       6 v9-v9n   json   4000    slice        144    135  0.938
A       6 v9-v9n   json   32000   load         241    239  0.992
A       6 v9-v9n   json   32000   prefix       112     78  0.696
A       6 v9-v9n   json   32000   read_all      80     80  1.000
A       6 v9-v9n   json   32000   slice        124     80  0.645
A       6 v9-v9n   random 4000    load         691    679  0.983
A       6 v9-v9n   random 4000    prefix       221    216  0.977
A       6 v9-v9n   random 4000    read_all     218    215  0.986
A       6 v9-v9n   random 4000    slice        223    217  0.973
A       6 v9-v9n   random 32000   load         368    364  0.989
A       6 v9-v9n   random 32000   prefix       160    121  0.756
A       6 v9-v9n   random 32000   read_all     140    122  0.871
A       6 v9-v9n   random 32000   slice        164    122  0.744
A       6 v9-v9n   random 1000000 load         556    552  0.993
A       6 v9-v9n   random 1000000 prefix        50     50  1.000
A       6 v9-v9n   random 1000000 read_all     167    163  0.976
A       6 v9-v9n   random 1000000 slice        114     78  0.684
A       7 v9n-v9   docs   4000    load         860    846  0.984
A       7 v9n-v9   docs   4000    prefix       231    222  0.961
A       7 v9n-v9   docs   4000    read_all     231    222  0.961
A       7 v9n-v9   docs   4000    slice        232    224  0.966
A       7 v9n-v9   docs   32000   load         586    573  0.978
A       7 v9n-v9   docs   32000   prefix       183    128  0.699
A       7 v9n-v9   docs   32000   read_all     159    130  0.818
A       7 v9n-v9   docs   32000   slice        191    128  0.670
A       7 v9n-v9   json   4000    load         450    444  0.987
A       7 v9n-v9   json   4000    prefix       143    134  0.937
A       7 v9n-v9   json   4000    read_all     142    136  0.958
A       7 v9n-v9   json   4000    slice        144    135  0.938
A       7 v9n-v9   json   32000   load         233    240  1.030
A       7 v9n-v9   json   32000   prefix       122     79  0.648
A       7 v9n-v9   json   32000   read_all      80     81  1.012
A       7 v9n-v9   json   32000   slice        134     79  0.590
A       7 v9n-v9   random 4000    load         698    698  1.000
A       7 v9n-v9   random 4000    prefix       221    217  0.982
A       7 v9n-v9   random 4000    read_all     220    216  0.982
A       7 v9n-v9   random 4000    slice        223    217  0.973
A       7 v9n-v9   random 32000   load         373    373  1.000
A       7 v9n-v9   random 32000   prefix       175    122  0.697
A       7 v9n-v9   random 32000   read_all     149    124  0.832
A       7 v9n-v9   random 32000   slice        175    122  0.697
A       7 v9n-v9   random 1000000 load         558    547  0.980
A       7 v9n-v9   random 1000000 prefix        49     49  1.000
A       7 v9n-v9   random 1000000 read_all     167    163  0.976
A       7 v9n-v9   random 1000000 slice        112     77  0.688
A       8 v9-v9n   docs   4000    load         848    843  0.994
A       8 v9-v9n   docs   4000    prefix       229    226  0.987
A       8 v9-v9n   docs   4000    read_all     229    221  0.965
A       8 v9-v9n   docs   4000    slice        229    221  0.965
A       8 v9-v9n   docs   32000   load         573    583  1.017
A       8 v9-v9n   docs   32000   prefix       170    126  0.741
A       8 v9-v9n   docs   32000   read_all     147    128  0.871
A       8 v9-v9n   docs   32000   slice        174    127  0.730
A       8 v9-v9n   json   4000    load         443    437  0.986
A       8 v9-v9n   json   4000    prefix       140    136  0.971
A       8 v9-v9n   json   4000    read_all     140    135  0.964
A       8 v9-v9n   json   4000    slice        141    134  0.950
A       8 v9-v9n   json   32000   load         248    239  0.964
A       8 v9-v9n   json   32000   prefix       111     79  0.712
A       8 v9-v9n   json   32000   read_all      81     79  0.975
A       8 v9-v9n   json   32000   slice        122     80  0.656
A       8 v9-v9n   random 4000    load         677    684  1.010
A       8 v9-v9n   random 4000    prefix       218    214  0.982
A       8 v9-v9n   random 4000    read_all     218    214  0.982
A       8 v9-v9n   random 4000    slice        221    216  0.977
A       8 v9-v9n   random 32000   load         366    361  0.986
A       8 v9-v9n   random 32000   prefix       160    120  0.750
A       8 v9-v9n   random 32000   read_all     139    122  0.878
A       8 v9-v9n   random 32000   slice        163    122  0.748
A       8 v9-v9n   random 1000000 load         545    543  0.996
A       8 v9-v9n   random 1000000 prefix        49     48  0.980
A       8 v9-v9n   random 1000000 read_all     165    164  0.994
A       8 v9-v9n   random 1000000 slice        112     77  0.688
A       9 v9n-v9   docs   4000    load         850    844  0.993
A       9 v9n-v9   docs   4000    prefix       229    221  0.965
A       9 v9n-v9   docs   4000    read_all     228    221  0.969
A       9 v9n-v9   docs   4000    slice        231    223  0.965
A       9 v9n-v9   docs   32000   load         577    572  0.991
A       9 v9n-v9   docs   32000   prefix       179    126  0.704
A       9 v9n-v9   docs   32000   read_all     155    128  0.826
A       9 v9n-v9   docs   32000   slice        183    127  0.694
A       9 v9n-v9   json   4000    load         441    443  1.005
A       9 v9n-v9   json   4000    prefix       143    133  0.930
A       9 v9n-v9   json   4000    read_all     140    134  0.957
A       9 v9n-v9   json   4000    slice        142    134  0.944
A       9 v9n-v9   json   32000   load         240    236  0.983
A       9 v9n-v9   json   32000   prefix       119     78  0.655
A       9 v9n-v9   json   32000   read_all      80     80  1.000
A       9 v9n-v9   json   32000   slice        132     79  0.598
A       9 v9n-v9   random 4000    load         686    687  1.001
A       9 v9n-v9   random 4000    prefix       219    215  0.982
A       9 v9n-v9   random 4000    read_all     218    216  0.991
A       9 v9n-v9   random 4000    slice        221    218  0.986
A       9 v9n-v9   random 32000   load         371    362  0.976
A       9 v9n-v9   random 32000   prefix       171    120  0.702
A       9 v9n-v9   random 32000   read_all     151    122  0.808
A       9 v9n-v9   random 32000   slice        174    121  0.695
A       9 v9n-v9   random 1000000 load         544    544  1.000
A       9 v9n-v9   random 1000000 prefix        49     48  0.980
A       9 v9n-v9   random 1000000 read_all     164    166  1.012
A       9 v9n-v9   random 1000000 slice        112     77  0.688
A      10 v9-v9n   docs   4000    load         835    851  1.019
A      10 v9-v9n   docs   4000    prefix       231    224  0.970
A      10 v9-v9n   docs   4000    read_all     226    220  0.973
A      10 v9-v9n   docs   4000    slice        229    225  0.983
A      10 v9-v9n   docs   32000   load         571    578  1.012
A      10 v9-v9n   docs   32000   prefix       169    127  0.751
A      10 v9-v9n   docs   32000   read_all     144    129  0.896
A      10 v9-v9n   docs   32000   slice        171    130  0.760
A      10 v9-v9n   json   4000    load         439    444  1.011
A      10 v9-v9n   json   4000    prefix       142    135  0.951
A      10 v9-v9n   json   4000    read_all     140    135  0.964
A      10 v9-v9n   json   4000    slice        142    134  0.944
A      10 v9-v9n   json   32000   load         236    232  0.983
A      10 v9-v9n   json   32000   prefix       111     78  0.703
A      10 v9-v9n   json   32000   read_all      80     82  1.025
A      10 v9-v9n   json   32000   slice        123     80  0.650
A      10 v9-v9n   random 4000    load         677    677  1.000
A      10 v9-v9n   random 4000    prefix       218    216  0.991
A      10 v9-v9n   random 4000    read_all     217    216  0.995
A      10 v9-v9n   random 4000    slice        221    219  0.991
A      10 v9-v9n   random 32000   load         373    359  0.962
A      10 v9-v9n   random 32000   prefix       159    121  0.761
A      10 v9-v9n   random 32000   read_all     139    122  0.878
A      10 v9-v9n   random 32000   slice        163    123  0.755
A      10 v9-v9n   random 1000000 load         542    526  0.970
A      10 v9-v9n   random 1000000 prefix        49     47  0.959
A      10 v9-v9n   random 1000000 read_all     166    164  0.988
A      10 v9-v9n   random 1000000 slice        113     77  0.681
A      11 v9n-v9   docs   4000    load         842    838  0.995
A      11 v9n-v9   docs   4000    prefix       230    219  0.952
A      11 v9n-v9   docs   4000    read_all     226    220  0.973
A      11 v9n-v9   docs   4000    slice        228    221  0.969
A      11 v9n-v9   docs   32000   load         572    572  1.000
A      11 v9n-v9   docs   32000   prefix       181    127  0.702
A      11 v9n-v9   docs   32000   read_all     154    129  0.838
A      11 v9n-v9   docs   32000   slice        183    128  0.699
A      11 v9n-v9   json   4000    load         441    438  0.993
A      11 v9n-v9   json   4000    prefix       143    132  0.923
A      11 v9n-v9   json   4000    read_all     140    133  0.950
A      11 v9n-v9   json   4000    slice        141    133  0.943
A      11 v9n-v9   json   32000   load         235    230  0.979
A      11 v9n-v9   json   32000   prefix       123     78  0.634
A      11 v9n-v9   json   32000   read_all      81     79  0.975
A      11 v9n-v9   json   32000   slice        132     79  0.598
A      11 v9n-v9   random 4000    load         678    681  1.004
A      11 v9n-v9   random 4000    prefix       218    215  0.986
A      11 v9n-v9   random 4000    read_all     218    215  0.986
A      11 v9n-v9   random 4000    slice        222    217  0.977
A      11 v9n-v9   random 32000   load         366    359  0.981
A      11 v9n-v9   random 32000   prefix       168    120  0.714
A      11 v9n-v9   random 32000   read_all     149    121  0.812
A      11 v9n-v9   random 32000   slice        173    121  0.699
A      11 v9n-v9   random 1000000 load         554    540  0.975
A      11 v9n-v9   random 1000000 prefix        48     48  1.000
A      11 v9n-v9   random 1000000 read_all     165    166  1.006
A      11 v9n-v9   random 1000000 slice        111     77  0.694
A      12 v9-v9n   docs   4000    load         841    850  1.011
A      12 v9-v9n   docs   4000    prefix       226    220  0.973
A      12 v9-v9n   docs   4000    read_all     226    219  0.969
A      12 v9-v9n   docs   4000    slice        228    222  0.974
A      12 v9-v9n   docs   32000   load         580    573  0.988
A      12 v9-v9n   docs   32000   prefix       168    125  0.744
A      12 v9-v9n   docs   32000   read_all     145    128  0.883
A      12 v9-v9n   docs   32000   slice        172    127  0.738
A      12 v9-v9n   json   4000    load         440    443  1.007
A      12 v9-v9n   json   4000    prefix       139    133  0.957
A      12 v9-v9n   json   4000    read_all     141    134  0.950
A      12 v9-v9n   json   4000    slice        142    134  0.944
A      12 v9-v9n   json   32000   load         241    237  0.983
A      12 v9-v9n   json   32000   prefix       111     78  0.703
A      12 v9-v9n   json   32000   read_all      80     79  0.988
A      12 v9-v9n   json   32000   slice        122     79  0.648
A      12 v9-v9n   random 4000    load         686    682  0.994
A      12 v9-v9n   random 4000    prefix       219    214  0.977
A      12 v9-v9n   random 4000    read_all     217    214  0.986
A      12 v9-v9n   random 4000    slice        221    217  0.982
A      12 v9-v9n   random 32000   load         369    358  0.970
A      12 v9-v9n   random 32000   prefix       160    120  0.750
A      12 v9-v9n   random 32000   read_all     139    121  0.871
A      12 v9-v9n   random 32000   slice        163    120  0.736
A      12 v9-v9n   random 1000000 load         542    542  1.000
A      12 v9-v9n   random 1000000 prefix        48     48  1.000
A      12 v9-v9n   random 1000000 read_all     164    165  1.006
A      12 v9-v9n   random 1000000 slice        111     78  0.703
A      13 v9n-v9   docs   4000    load         842    838  0.995
A      13 v9n-v9   docs   4000    prefix       229    220  0.961
A      13 v9n-v9   docs   4000    read_all     225    219  0.973
A      13 v9n-v9   docs   4000    slice        227    221  0.974
A      13 v9n-v9   docs   32000   load         572    565  0.988
A      13 v9n-v9   docs   32000   prefix       168    127  0.756
A      13 v9n-v9   docs   32000   read_all     144    129  0.896
A      13 v9n-v9   docs   32000   slice        171    128  0.749
A      13 v9n-v9   json   4000    load         437    437  1.000
A      13 v9n-v9   json   4000    prefix       141    133  0.943
A      13 v9n-v9   json   4000    read_all     141    133  0.943
A      13 v9n-v9   json   4000    slice        143    133  0.930
A      13 v9n-v9   json   32000   load         237    238  1.004
A      13 v9n-v9   json   32000   prefix       114     78  0.684
A      13 v9n-v9   json   32000   read_all      79     79  1.000
A      13 v9n-v9   json   32000   slice        121     79  0.653
A      13 v9n-v9   random 4000    load         679    672  0.990
A      13 v9n-v9   random 4000    prefix       218    213  0.977
A      13 v9n-v9   random 4000    read_all     217    214  0.986
A      13 v9n-v9   random 4000    slice        221    216  0.977
A      13 v9n-v9   random 32000   load         363    377  1.039
A      13 v9n-v9   random 32000   prefix       153    120  0.784
A      13 v9n-v9   random 32000   read_all     138    122  0.884
A      13 v9n-v9   random 32000   slice        162    122  0.753
A      13 v9n-v9   random 1000000 load         534    537  1.006
A      13 v9n-v9   random 1000000 prefix        48     49  1.021
A      13 v9n-v9   random 1000000 read_all     165    164  0.994
A      13 v9n-v9   random 1000000 slice        111     78  0.703
A      14 v9-v9n   docs   4000    load         865    835  0.965
A      14 v9-v9n   docs   4000    prefix       229    222  0.969
A      14 v9-v9n   docs   4000    read_all     227    222  0.978
A      14 v9-v9n   docs   4000    slice        229    222  0.969
A      14 v9-v9n   docs   32000   load         573    571  0.997
A      14 v9-v9n   docs   32000   prefix       167    126  0.754
A      14 v9-v9n   docs   32000   read_all     145    129  0.890
A      14 v9-v9n   docs   32000   slice        171    127  0.743
A      14 v9-v9n   json   4000    load         440    440  1.000
A      14 v9-v9n   json   4000    prefix       141    131  0.929
A      14 v9-v9n   json   4000    read_all     141    134  0.950
A      14 v9-v9n   json   4000    slice        142    134  0.944
A      14 v9-v9n   json   32000   load         240    234  0.975
A      14 v9-v9n   json   32000   prefix       110     78  0.709
A      14 v9-v9n   json   32000   read_all      81     80  0.988
A      14 v9-v9n   json   32000   slice        120     79  0.658
A      14 v9-v9n   random 4000    load         677    667  0.985
A      14 v9-v9n   random 4000    prefix       219    213  0.973
A      14 v9-v9n   random 4000    read_all     219    214  0.977
A      14 v9-v9n   random 4000    slice        220    216  0.982
A      14 v9-v9n   random 32000   load         373    365  0.979
A      14 v9-v9n   random 32000   prefix       158    120  0.759
A      14 v9-v9n   random 32000   read_all     139    121  0.871
A      14 v9-v9n   random 32000   slice        162    120  0.741
A      14 v9-v9n   random 1000000 load         541    541  1.000
A      14 v9-v9n   random 1000000 prefix        48     48  1.000
A      14 v9-v9n   random 1000000 read_all     164    166  1.012
A      14 v9-v9n   random 1000000 slice        112     78  0.696
B       1 v9n-v9   docs   4000    load         828    828  1.000
B       1 v9n-v9   docs   4000    prefix       230    220  0.957
B       1 v9n-v9   docs   4000    read_all     226    221  0.978
B       1 v9n-v9   docs   4000    slice        226    222  0.982
B       1 v9n-v9   docs   32000   load         569    572  1.005
B       1 v9n-v9   docs   32000   prefix       168    126  0.750
B       1 v9n-v9   docs   32000   read_all     144    128  0.889
B       1 v9n-v9   docs   32000   slice        172    127  0.738
B       1 v9n-v9   json   4000    load         440    436  0.991
B       1 v9n-v9   json   4000    prefix       143    132  0.923
B       1 v9n-v9   json   4000    read_all     139    134  0.964
B       1 v9n-v9   json   4000    slice        141    132  0.936
B       1 v9n-v9   json   32000   load         241    237  0.983
B       1 v9n-v9   json   32000   prefix       109     78  0.716
B       1 v9n-v9   json   32000   read_all      79     80  1.013
B       1 v9n-v9   json   32000   slice        122     79  0.648
B       1 v9n-v9   random 4000    load         688    672  0.977
B       1 v9n-v9   random 4000    prefix       218    213  0.977
B       1 v9n-v9   random 4000    read_all     216    213  0.986
B       1 v9n-v9   random 4000    slice        220    214  0.973
B       1 v9n-v9   random 32000   load         371    375  1.011
B       1 v9n-v9   random 32000   prefix       155    120  0.774
B       1 v9n-v9   random 32000   read_all     139    123  0.885
B       1 v9n-v9   random 32000   slice        163    122  0.748
B       1 v9n-v9   random 1000000 load         508    523  1.030
B       1 v9n-v9   random 1000000 prefix        47     47  1.000
B       1 v9n-v9   random 1000000 read_all     163    165  1.012
B       1 v9n-v9   random 1000000 slice        109     77  0.706
B       2 v9-v9n   docs   4000    load         834    832  0.998
B       2 v9-v9n   docs   4000    prefix       228    220  0.965
B       2 v9-v9n   docs   4000    read_all     227    220  0.969
B       2 v9-v9n   docs   4000    slice        228    221  0.969
B       2 v9-v9n   docs   32000   load         570    565  0.991
B       2 v9-v9n   docs   32000   prefix       173    126  0.728
B       2 v9-v9n   docs   32000   read_all     143    128  0.895
B       2 v9-v9n   docs   32000   slice        178    127  0.713
B       2 v9-v9n   json   4000    load         443    443  1.000
B       2 v9-v9n   json   4000    prefix       141    133  0.943
B       2 v9-v9n   json   4000    read_all     139    133  0.957
B       2 v9-v9n   json   4000    slice        141    133  0.943
B       2 v9-v9n   json   32000   load         242    234  0.967
B       2 v9-v9n   json   32000   prefix       110     77  0.700
B       2 v9-v9n   json   32000   read_all      80     79  0.988
B       2 v9-v9n   json   32000   slice        127     79  0.622
B       2 v9-v9n   random 4000    load         675    673  0.997
B       2 v9-v9n   random 4000    prefix       219    212  0.968
B       2 v9-v9n   random 4000    read_all     216    214  0.991
B       2 v9-v9n   random 4000    slice        220    215  0.977
B       2 v9-v9n   random 32000   load         372    359  0.965
B       2 v9-v9n   random 32000   prefix       166    120  0.723
B       2 v9-v9n   random 32000   read_all     139    122  0.878
B       2 v9-v9n   random 32000   slice        169    121  0.716
B       2 v9-v9n   random 1000000 load         530    527  0.994
B       2 v9-v9n   random 1000000 prefix        48     48  1.000
B       2 v9-v9n   random 1000000 read_all     164    164  1.000
B       2 v9-v9n   random 1000000 slice        111     77  0.694
B       3 v9n-v9   docs   4000    load         849    837  0.986
B       3 v9n-v9   docs   4000    prefix       227    220  0.969
B       3 v9n-v9   docs   4000    read_all     224    219  0.978
B       3 v9n-v9   docs   4000    slice        230    219  0.952
B       3 v9n-v9   docs   32000   load         569    572  1.005
B       3 v9n-v9   docs   32000   prefix       168    126  0.750
B       3 v9n-v9   docs   32000   read_all     144    128  0.889
B       3 v9n-v9   docs   32000   slice        171    128  0.749
B       3 v9n-v9   json   4000    load         436    437  1.002
B       3 v9n-v9   json   4000    prefix       140    133  0.950
B       3 v9n-v9   json   4000    read_all     140    134  0.957
B       3 v9n-v9   json   4000    slice        142    133  0.937
B       3 v9n-v9   json   32000   load         238    234  0.983
B       3 v9n-v9   json   32000   prefix       111     78  0.703
B       3 v9n-v9   json   32000   read_all      79     79  1.000
B       3 v9n-v9   json   32000   slice        120     79  0.658
B       3 v9n-v9   random 4000    load         677    682  1.007
B       3 v9n-v9   random 4000    prefix       218    214  0.982
B       3 v9n-v9   random 4000    read_all     216    214  0.991
B       3 v9n-v9   random 4000    slice        220    216  0.982
B       3 v9n-v9   random 32000   load         372    361  0.970
B       3 v9n-v9   random 32000   prefix       152    120  0.789
B       3 v9n-v9   random 32000   read_all     139    121  0.871
B       3 v9n-v9   random 32000   slice        162    122  0.753
B       3 v9n-v9   random 1000000 load         543    534  0.983
B       3 v9n-v9   random 1000000 prefix        49     48  0.980
B       3 v9n-v9   random 1000000 read_all     164    164  1.000
B       3 v9n-v9   random 1000000 slice        111     77  0.694
B       4 v9-v9n   docs   4000    load         839    833  0.993
B       4 v9-v9n   docs   4000    prefix       227    217  0.956
B       4 v9-v9n   docs   4000    read_all     226    219  0.969
B       4 v9-v9n   docs   4000    slice        228    221  0.969
B       4 v9-v9n   docs   32000   load         578    579  1.002
B       4 v9-v9n   docs   32000   prefix       168    126  0.750
B       4 v9-v9n   docs   32000   read_all     144    128  0.889
B       4 v9-v9n   docs   32000   slice        171    128  0.749
B       4 v9-v9n   json   4000    load         444    435  0.980
B       4 v9-v9n   json   4000    prefix       140    132  0.943
B       4 v9-v9n   json   4000    read_all     140    133  0.950
B       4 v9-v9n   json   4000    slice        142    133  0.937
B       4 v9-v9n   json   32000   load         238    237  0.996
B       4 v9-v9n   json   32000   prefix       111     78  0.703
B       4 v9-v9n   json   32000   read_all      80     78  0.975
B       4 v9-v9n   json   32000   slice        121     79  0.653
B       4 v9-v9n   random 4000    load         699    679  0.971
B       4 v9-v9n   random 4000    prefix       220    215  0.977
B       4 v9-v9n   random 4000    read_all     218    214  0.982
B       4 v9-v9n   random 4000    slice        222    215  0.968
B       4 v9-v9n   random 32000   load         358    364  1.017
B       4 v9-v9n   random 32000   prefix       153    120  0.784
B       4 v9-v9n   random 32000   read_all     139    122  0.878
B       4 v9-v9n   random 32000   slice        164    121  0.738
B       4 v9-v9n   random 1000000 load         555    548  0.987
B       4 v9-v9n   random 1000000 prefix        48     47  0.979
B       4 v9-v9n   random 1000000 read_all     165    164  0.994
B       4 v9-v9n   random 1000000 slice        111     77  0.694
B       5 v9n-v9   docs   4000    load         833    838  1.006
B       5 v9n-v9   docs   4000    prefix       229    219  0.956
B       5 v9n-v9   docs   4000    read_all     226    220  0.973
B       5 v9n-v9   docs   4000    slice        229    220  0.961
B       5 v9n-v9   docs   32000   load         569    570  1.002
B       5 v9n-v9   docs   32000   prefix       168    126  0.750
B       5 v9n-v9   docs   32000   read_all     144    127  0.882
B       5 v9n-v9   docs   32000   slice        173    128  0.740
B       5 v9n-v9   json   4000    load         447    437  0.978
B       5 v9n-v9   json   4000    prefix       141    134  0.950
B       5 v9n-v9   json   4000    read_all     140    134  0.957
B       5 v9n-v9   json   4000    slice        141    133  0.943
B       5 v9n-v9   json   32000   load         240    238  0.992
B       5 v9n-v9   json   32000   prefix       111     78  0.703
B       5 v9n-v9   json   32000   read_all      80     80  1.000
B       5 v9n-v9   json   32000   slice        122     79  0.648
B       5 v9n-v9   random 4000    load         689    684  0.993
B       5 v9n-v9   random 4000    prefix       219    215  0.982
B       5 v9n-v9   random 4000    read_all     218    214  0.982
B       5 v9n-v9   random 4000    slice        222    217  0.977
B       5 v9n-v9   random 32000   load         363    362  0.997
B       5 v9n-v9   random 32000   prefix       152    120  0.789
B       5 v9n-v9   random 32000   read_all     137    121  0.883
B       5 v9n-v9   random 32000   slice        162    121  0.747
B       5 v9n-v9   random 1000000 load         546    534  0.978
B       5 v9n-v9   random 1000000 prefix        48     47  0.979
B       5 v9n-v9   random 1000000 read_all     164    163  0.994
B       5 v9n-v9   random 1000000 slice        111     77  0.694
B       6 v9-v9n   docs   4000    load         841    831  0.988
B       6 v9-v9n   docs   4000    prefix       227    219  0.965
B       6 v9-v9n   docs   4000    read_all     227    220  0.969
B       6 v9-v9n   docs   4000    slice        227    220  0.969
B       6 v9-v9n   docs   32000   load         558    575  1.030
B       6 v9-v9n   docs   32000   prefix       168    126  0.750
B       6 v9-v9n   docs   32000   read_all     144    128  0.889
B       6 v9-v9n   docs   32000   slice        172    128  0.744
B       6 v9-v9n   json   4000    load         441    444  1.007
B       6 v9-v9n   json   4000    prefix       140    131  0.936
B       6 v9-v9n   json   4000    read_all     140    133  0.950
B       6 v9-v9n   json   4000    slice        142    133  0.937
B       6 v9-v9n   json   32000   load         236    235  0.996
B       6 v9-v9n   json   32000   prefix       111     77  0.694
B       6 v9-v9n   json   32000   read_all      80     79  0.988
B       6 v9-v9n   json   32000   slice        122     79  0.648
B       6 v9-v9n   random 4000    load         688    676  0.983
B       6 v9-v9n   random 4000    prefix       219    214  0.977
B       6 v9-v9n   random 4000    read_all     217    213  0.982
B       6 v9-v9n   random 4000    slice        221    216  0.977
B       6 v9-v9n   random 32000   load         365    366  1.003
B       6 v9-v9n   random 32000   prefix       152    120  0.789
B       6 v9-v9n   random 32000   read_all     138    122  0.884
B       6 v9-v9n   random 32000   slice        161    121  0.752
B       6 v9-v9n   random 1000000 load         546    525  0.962
B       6 v9-v9n   random 1000000 prefix        49     47  0.959
B       6 v9-v9n   random 1000000 read_all     165    165  1.000
B       6 v9-v9n   random 1000000 slice        112     77  0.688
B       7 v9n-v9   docs   4000    load         825    845  1.024
B       7 v9n-v9   docs   4000    prefix       234    220  0.940
B       7 v9n-v9   docs   4000    read_all     229    220  0.961
B       7 v9n-v9   docs   4000    slice        236    220  0.932
B       7 v9n-v9   docs   32000   load         578    573  0.991
B       7 v9n-v9   docs   32000   prefix       167    126  0.754
B       7 v9n-v9   docs   32000   read_all     144    127  0.882
B       7 v9n-v9   docs   32000   slice        170    128  0.753
B       7 v9n-v9   json   4000    load         451    441  0.978
B       7 v9n-v9   json   4000    prefix       142    132  0.930
B       7 v9n-v9   json   4000    read_all     140    133  0.950
B       7 v9n-v9   json   4000    slice        142    132  0.930
B       7 v9n-v9   json   32000   load         240    237  0.988
B       7 v9n-v9   json   32000   prefix       111     78  0.703
B       7 v9n-v9   json   32000   read_all      80     80  1.000
B       7 v9n-v9   json   32000   slice        121     79  0.653
B       7 v9n-v9   random 4000    load         710    694  0.977
B       7 v9n-v9   random 4000    prefix       219    213  0.973
B       7 v9n-v9   random 4000    read_all     220    213  0.968
B       7 v9n-v9   random 4000    slice        223    217  0.973
B       7 v9n-v9   random 32000   load         372    361  0.970
B       7 v9n-v9   random 32000   prefix       153    121  0.791
B       7 v9n-v9   random 32000   read_all     140    122  0.871
B       7 v9n-v9   random 32000   slice        163    121  0.742
B       7 v9n-v9   random 1000000 load         527    547  1.038
B       7 v9n-v9   random 1000000 prefix        48     47  0.979
B       7 v9n-v9   random 1000000 read_all     163    165  1.012
B       7 v9n-v9   random 1000000 slice        112     77  0.688
B       8 v9-v9n   docs   4000    load         835    835  1.000
B       8 v9-v9n   docs   4000    prefix       227    219  0.965
B       8 v9-v9n   docs   4000    read_all     226    220  0.973
B       8 v9-v9n   docs   4000    slice        227    220  0.969
B       8 v9-v9n   docs   32000   load         580    574  0.990
B       8 v9-v9n   docs   32000   prefix       168    126  0.750
B       8 v9-v9n   docs   32000   read_all     144    128  0.889
B       8 v9-v9n   docs   32000   slice        171    129  0.754
B       8 v9-v9n   json   4000    load         442    438  0.991
B       8 v9-v9n   json   4000    prefix       140    131  0.936
B       8 v9-v9n   json   4000    read_all     140    133  0.950
B       8 v9-v9n   json   4000    slice        140    132  0.943
B       8 v9-v9n   json   32000   load         241    239  0.992
B       8 v9-v9n   json   32000   prefix       113     77  0.681
B       8 v9-v9n   json   32000   read_all      79     79  1.000
B       8 v9-v9n   json   32000   slice        122     80  0.656
B       8 v9-v9n   random 4000    load         692    688  0.994
B       8 v9-v9n   random 4000    prefix       218    214  0.982
B       8 v9-v9n   random 4000    read_all     217    214  0.986
B       8 v9-v9n   random 4000    slice        221    217  0.982
B       8 v9-v9n   random 32000   load         373    359  0.962
B       8 v9-v9n   random 32000   prefix       155    120  0.774
B       8 v9-v9n   random 32000   read_all     139    122  0.878
B       8 v9-v9n   random 32000   slice        163    120  0.736
B       8 v9-v9n   random 1000000 load         545    548  1.006
B       8 v9-v9n   random 1000000 prefix        48     48  1.000
B       8 v9-v9n   random 1000000 read_all     166    166  1.000
B       8 v9-v9n   random 1000000 slice        111     78  0.703
B       9 v9n-v9   docs   4000    load         840    842  1.002
B       9 v9n-v9   docs   4000    prefix       226    220  0.973
B       9 v9n-v9   docs   4000    read_all     230    220  0.957
B       9 v9n-v9   docs   4000    slice        227    221  0.974
B       9 v9n-v9   docs   32000   load         578    569  0.984
B       9 v9n-v9   docs   32000   prefix       169    126  0.746
B       9 v9n-v9   docs   32000   read_all     145    127  0.876
B       9 v9n-v9   docs   32000   slice        172    127  0.738
B       9 v9n-v9   json   4000    load         442    438  0.991
B       9 v9n-v9   json   4000    prefix       140    132  0.943
B       9 v9n-v9   json   4000    read_all     143    133  0.930
B       9 v9n-v9   json   4000    slice        142    133  0.937
B       9 v9n-v9   json   32000   load         237    237  1.000
B       9 v9n-v9   json   32000   prefix       110     78  0.709
B       9 v9n-v9   json   32000   read_all      80     79  0.988
B       9 v9n-v9   json   32000   slice        121     79  0.653
B       9 v9n-v9   random 4000    load         690    700  1.014
B       9 v9n-v9   random 4000    prefix       219    214  0.977
B       9 v9n-v9   random 4000    read_all     217    214  0.986
B       9 v9n-v9   random 4000    slice        221    217  0.982
B       9 v9n-v9   random 32000   load         367    365  0.995
B       9 v9n-v9   random 32000   prefix       154    120  0.779
B       9 v9n-v9   random 32000   read_all     138    121  0.877
B       9 v9n-v9   random 32000   slice        162    121  0.747
B       9 v9n-v9   random 1000000 load         537    528  0.983
B       9 v9n-v9   random 1000000 prefix        48     48  1.000
B       9 v9n-v9   random 1000000 read_all     164    165  1.006
B       9 v9n-v9   random 1000000 slice        111     78  0.703
B      10 v9-v9n   docs   4000    load         840    841  1.001
B      10 v9-v9n   docs   4000    prefix       227    220  0.969
B      10 v9-v9n   docs   4000    read_all     225    219  0.973
B      10 v9-v9n   docs   4000    slice        227    220  0.969
B      10 v9-v9n   docs   32000   load         574    567  0.988
B      10 v9-v9n   docs   32000   prefix       166    126  0.759
B      10 v9-v9n   docs   32000   read_all     144    128  0.889
B      10 v9-v9n   docs   32000   slice        172    128  0.744
B      10 v9-v9n   json   4000    load         444    441  0.993
B      10 v9-v9n   json   4000    prefix       140    131  0.936
B      10 v9-v9n   json   4000    read_all     140    133  0.950
B      10 v9-v9n   json   4000    slice        142    132  0.930
B      10 v9-v9n   json   32000   load         237    235  0.992
B      10 v9-v9n   json   32000   prefix       110     78  0.709
B      10 v9-v9n   json   32000   read_all      80     79  0.988
B      10 v9-v9n   json   32000   slice        122     79  0.648
B      10 v9-v9n   random 4000    load         686    687  1.001
B      10 v9-v9n   random 4000    prefix       218    215  0.986
B      10 v9-v9n   random 4000    read_all     217    213  0.982
B      10 v9-v9n   random 4000    slice        220    217  0.986
B      10 v9-v9n   random 32000   load         362    369  1.019
B      10 v9-v9n   random 32000   prefix       158    119  0.753
B      10 v9-v9n   random 32000   read_all     138    121  0.877
B      10 v9-v9n   random 32000   slice        162    120  0.741
B      10 v9-v9n   random 1000000 load         543    541  0.996
B      10 v9-v9n   random 1000000 prefix        49     47  0.959
B      10 v9-v9n   random 1000000 read_all     164    163  0.994
B      10 v9-v9n   random 1000000 slice        110     77  0.700
B      11 v9n-v9   docs   4000    load         846    844  0.998
B      11 v9n-v9   docs   4000    prefix       226    220  0.973
B      11 v9n-v9   docs   4000    read_all     226    220  0.973
B      11 v9n-v9   docs   4000    slice        228    220  0.965
B      11 v9n-v9   docs   32000   load         580    570  0.983
B      11 v9n-v9   docs   32000   prefix       167    126  0.754
B      11 v9n-v9   docs   32000   read_all     144    127  0.882
B      11 v9n-v9   docs   32000   slice        171    127  0.743
B      11 v9n-v9   json   4000    load         445    437  0.982
B      11 v9n-v9   json   4000    prefix       140    131  0.936
B      11 v9n-v9   json   4000    read_all     140    133  0.950
B      11 v9n-v9   json   4000    slice        140    133  0.950
B      11 v9n-v9   json   32000   load         236    236  1.000
B      11 v9n-v9   json   32000   prefix       110     77  0.700
B      11 v9n-v9   json   32000   read_all      79     79  1.000
B      11 v9n-v9   json   32000   slice        122     79  0.648
B      11 v9n-v9   random 4000    load         690    698  1.012
B      11 v9n-v9   random 4000    prefix       218    214  0.982
B      11 v9n-v9   random 4000    read_all     216    214  0.991
B      11 v9n-v9   random 4000    slice        220    217  0.986
B      11 v9n-v9   random 32000   load         389    384  0.987
B      11 v9n-v9   random 32000   prefix       159    121  0.761
B      11 v9n-v9   random 32000   read_all     140    122  0.871
B      11 v9n-v9   random 32000   slice        162    121  0.747
B      11 v9n-v9   random 1000000 load         542    529  0.976
B      11 v9n-v9   random 1000000 prefix        48     48  1.000
B      11 v9n-v9   random 1000000 read_all     164    164  1.000
B      11 v9n-v9   random 1000000 slice        111     78  0.703
B      12 v9-v9n   docs   4000    load         839    828  0.987
B      12 v9-v9n   docs   4000    prefix       227    221  0.974
B      12 v9-v9n   docs   4000    read_all     226    220  0.973
B      12 v9-v9n   docs   4000    slice        228    220  0.965
B      12 v9-v9n   docs   32000   load         574    571  0.995
B      12 v9-v9n   docs   32000   prefix       168    127  0.756
B      12 v9-v9n   docs   32000   read_all     144    128  0.889
B      12 v9-v9n   docs   32000   slice        171    128  0.749
B      12 v9-v9n   json   4000    load         439    436  0.993
B      12 v9-v9n   json   4000    prefix       139    132  0.950
B      12 v9-v9n   json   4000    read_all     140    133  0.950
B      12 v9-v9n   json   4000    slice        140    132  0.943
B      12 v9-v9n   json   32000   load         237    237  1.000
B      12 v9-v9n   json   32000   prefix       110     78  0.709
B      12 v9-v9n   json   32000   read_all      80     79  0.988
B      12 v9-v9n   json   32000   slice        122     79  0.648
B      12 v9-v9n   random 4000    load         688    684  0.994
B      12 v9-v9n   random 4000    prefix       219    214  0.977
B      12 v9-v9n   random 4000    read_all     217    215  0.991
B      12 v9-v9n   random 4000    slice        220    217  0.986
B      12 v9-v9n   random 32000   load         363    360  0.992
B      12 v9-v9n   random 32000   prefix       159    120  0.755
B      12 v9-v9n   random 32000   read_all     139    121  0.871
B      12 v9-v9n   random 32000   slice        162    121  0.747
B      12 v9-v9n   random 1000000 load         544    537  0.987
B      12 v9-v9n   random 1000000 prefix        48     48  1.000
B      12 v9-v9n   random 1000000 read_all     165    165  1.000
B      12 v9-v9n   random 1000000 slice        111     77  0.694
C       1 v9n-v9   docs   4000    load         838    835  0.996
C       1 v9n-v9   docs   4000    prefix       227    221  0.974
C       1 v9n-v9   docs   4000    read_all     225    221  0.982
C       1 v9n-v9   docs   4000    slice        229    222  0.969
C       1 v9n-v9   docs   32000   load         571    573  1.004
C       1 v9n-v9   docs   32000   prefix       168    126  0.750
C       1 v9n-v9   docs   32000   read_all     144    128  0.889
C       1 v9n-v9   docs   32000   slice        172    128  0.744
C       1 v9n-v9   json   4000    load         447    443  0.991
C       1 v9n-v9   json   4000    prefix       140    132  0.943
C       1 v9n-v9   json   4000    read_all     139    134  0.964
C       1 v9n-v9   json   4000    slice        141    134  0.950
C       1 v9n-v9   json   32000   load         240    237  0.988
C       1 v9n-v9   json   32000   prefix       110     79  0.718
C       1 v9n-v9   json   32000   read_all      80     80  1.000
C       1 v9n-v9   json   32000   slice        122     79  0.648
C       1 v9n-v9   random 4000    load         691    687  0.994
C       1 v9n-v9   random 4000    prefix       218    216  0.991
C       1 v9n-v9   random 4000    read_all     219    215  0.982
C       1 v9n-v9   random 4000    slice        220    218  0.991
C       1 v9n-v9   random 32000   load         377    361  0.958
C       1 v9n-v9   random 32000   prefix       162    121  0.747
C       1 v9n-v9   random 32000   read_all     140    123  0.879
C       1 v9n-v9   random 32000   slice        164    122  0.744
C       1 v9n-v9   random 1000000 load         543    541  0.996
C       1 v9n-v9   random 1000000 prefix        49     47  0.959
C       1 v9n-v9   random 1000000 read_all     165    164  0.994
C       1 v9n-v9   random 1000000 slice        111     78  0.703
C       2 v9-v9n   docs   4000    load         843    848  1.006
C       2 v9-v9n   docs   4000    prefix       226    221  0.978
C       2 v9-v9n   docs   4000    read_all     225    219  0.973
C       2 v9-v9n   docs   4000    slice        228    221  0.969
C       2 v9-v9n   docs   32000   load         575    576  1.002
C       2 v9-v9n   docs   32000   prefix       168    126  0.750
C       2 v9-v9n   docs   32000   read_all     144    128  0.889
C       2 v9-v9n   docs   32000   slice        172    128  0.744
C       2 v9-v9n   json   4000    load         442    434  0.982
C       2 v9-v9n   json   4000    prefix       140    132  0.943
C       2 v9-v9n   json   4000    read_all     139    133  0.957
C       2 v9-v9n   json   4000    slice        142    133  0.937
C       2 v9-v9n   json   32000   load         239    237  0.992
C       2 v9-v9n   json   32000   prefix       110     77  0.700
C       2 v9-v9n   json   32000   read_all      79     79  1.000
C       2 v9-v9n   json   32000   slice        123     79  0.642
C       2 v9-v9n   random 4000    load         689    689  1.000
C       2 v9-v9n   random 4000    prefix       219    214  0.977
C       2 v9-v9n   random 4000    read_all     217    215  0.991
C       2 v9-v9n   random 4000    slice        220    217  0.986
C       2 v9-v9n   random 32000   load         368    357  0.970
C       2 v9-v9n   random 32000   prefix       159    120  0.755
C       2 v9-v9n   random 32000   read_all     139    121  0.871
C       2 v9-v9n   random 32000   slice        161    121  0.752
C       2 v9-v9n   random 1000000 load         537    542  1.009
C       2 v9-v9n   random 1000000 prefix        48     47  0.979
C       2 v9-v9n   random 1000000 read_all     165    165  1.000
C       2 v9-v9n   random 1000000 slice        112     77  0.688
C       3 v9n-v9   docs   4000    load         842    844  1.002
C       3 v9n-v9   docs   4000    prefix       226    222  0.982
C       3 v9n-v9   docs   4000    read_all     227    222  0.978
C       3 v9n-v9   docs   4000    slice        230    224  0.974
C       3 v9n-v9   docs   32000   load         585    557  0.952
C       3 v9n-v9   docs   32000   prefix       198    136  0.687
C       3 v9n-v9   docs   32000   read_all     181    126  0.696
C       3 v9n-v9   docs   32000   slice        193    127  0.658
C       3 v9n-v9   json   4000    load         457    474  1.037
C       3 v9n-v9   json   4000    prefix       175    133  0.760
C       3 v9n-v9   json   4000    read_all     139    137  0.986
C       3 v9n-v9   json   4000    slice        143    135  0.944
C       3 v9n-v9   json   32000   load         262    246  0.939
C       3 v9n-v9   json   32000   prefix       110     79  0.718
C       3 v9n-v9   json   32000   read_all      79     79  1.000
C       3 v9n-v9   json   32000   slice        120     78  0.650
C       3 v9n-v9   random 4000    load        1055    675  0.640
C       3 v9n-v9   random 4000    prefix       230    214  0.930
C       3 v9n-v9   random 4000    read_all     236    216  0.915
C       3 v9n-v9   random 4000    slice        239    221  0.925
C       3 v9n-v9   random 32000   load         516    371  0.719
C       3 v9n-v9   random 32000   prefix       157    121  0.771
C       3 v9n-v9   random 32000   read_all     145    121  0.834
C       3 v9n-v9   random 32000   slice        166    122  0.735
C       3 v9n-v9   random 1000000 load         532    553  1.039
C       3 v9n-v9   random 1000000 prefix        51     47  0.922
C       3 v9n-v9   random 1000000 read_all     182    164  0.901
C       3 v9n-v9   random 1000000 slice        124     77  0.621
C       4 v9-v9n   docs   4000    load         835    838  1.004
C       4 v9-v9n   docs   4000    prefix       226    219  0.969
C       4 v9-v9n   docs   4000    read_all     225    218  0.969
C       4 v9-v9n   docs   4000    slice        226    220  0.973
C       4 v9-v9n   docs   32000   load         577    565  0.979
C       4 v9-v9n   docs   32000   prefix       169    125  0.740
C       4 v9-v9n   docs   32000   read_all     145    127  0.876
C       4 v9-v9n   docs   32000   slice        173    126  0.728
C       4 v9-v9n   json   4000    load         439    439  1.000
C       4 v9-v9n   json   4000    prefix       139    131  0.942
C       4 v9-v9n   json   4000    read_all     141    133  0.943
C       4 v9-v9n   json   4000    slice        141    133  0.943
C       4 v9-v9n   json   32000   load         233    237  1.017
C       4 v9-v9n   json   32000   prefix       112     77  0.688
C       4 v9-v9n   json   32000   read_all      79     78  0.987
C       4 v9-v9n   json   32000   slice        122     78  0.639
C       4 v9-v9n   random 4000    load         693    687  0.991
C       4 v9-v9n   random 4000    prefix       223    212  0.951
C       4 v9-v9n   random 4000    read_all     219    214  0.977
C       4 v9-v9n   random 4000    slice        222    216  0.973
C       4 v9-v9n   random 32000   load         370    370  1.000
C       4 v9-v9n   random 32000   prefix       159    120  0.755
C       4 v9-v9n   random 32000   read_all     141    121  0.858
C       4 v9-v9n   random 32000   slice        164    121  0.738
C       4 v9-v9n   random 1000000 load         538    532  0.989
C       4 v9-v9n   random 1000000 prefix        49     48  0.980
C       4 v9-v9n   random 1000000 read_all     165    163  0.988
C       4 v9-v9n   random 1000000 slice        112     77  0.688
C       5 v9n-v9   docs   4000    load         846    856  1.012
C       5 v9n-v9   docs   4000    prefix       230    224  0.974
C       5 v9n-v9   docs   4000    read_all     226    221  0.978
C       5 v9n-v9   docs   4000    slice        230    221  0.961
C       5 v9n-v9   docs   32000   load         571    562  0.984
C       5 v9n-v9   docs   32000   prefix       178    127  0.713
C       5 v9n-v9   docs   32000   read_all     152    129  0.849
C       5 v9n-v9   docs   32000   slice        182    129  0.709
C       5 v9n-v9   json   4000    load         442    445  1.007
C       5 v9n-v9   json   4000    prefix       142    135  0.951
C       5 v9n-v9   json   4000    read_all     141    135  0.957
C       5 v9n-v9   json   4000    slice        142    134  0.944
C       5 v9n-v9   json   32000   load         236    244  1.034
C       5 v9n-v9   json   32000   prefix       119     78  0.655
C       5 v9n-v9   json   32000   read_all      79     81  1.025
C       5 v9n-v9   json   32000   slice        131     79  0.603
C       5 v9n-v9   random 4000    load         678    676  0.997
C       5 v9n-v9   random 4000    prefix       219    214  0.977
C       5 v9n-v9   random 4000    read_all     218    213  0.977
C       5 v9n-v9   random 4000    slice        220    216  0.982
C       5 v9n-v9   random 32000   load         360    364  1.011
C       5 v9n-v9   random 32000   prefix       165    121  0.733
C       5 v9n-v9   random 32000   read_all     147    123  0.837
C       5 v9n-v9   random 32000   slice        170    122  0.718
C       5 v9n-v9   random 1000000 load         531    550  1.036
C       5 v9n-v9   random 1000000 prefix        49     48  0.980
C       5 v9n-v9   random 1000000 read_all     163    167  1.025
C       5 v9n-v9   random 1000000 slice        111     78  0.703
C       6 v9-v9n   docs   4000    load         850    841  0.989
C       6 v9-v9n   docs   4000    prefix       233    222  0.953
C       6 v9-v9n   docs   4000    read_all     228    220  0.965
C       6 v9-v9n   docs   4000    slice        231    223  0.965
C       6 v9-v9n   docs   32000   load         575    572  0.995
C       6 v9-v9n   docs   32000   prefix       170    129  0.759
C       6 v9-v9n   docs   32000   read_all     146    131  0.897
C       6 v9-v9n   docs   32000   slice        174    129  0.741
C       6 v9-v9n   json   4000    load         442    436  0.986
C       6 v9-v9n   json   4000    prefix       143    133  0.930
C       6 v9-v9n   json   4000    read_all     143    136  0.951
C       6 v9-v9n   json   4000    slice        144    135  0.938
C       6 v9-v9n   json   32000   load         239    236  0.987
C       6 v9-v9n   json   32000   prefix       112     79  0.705
C       6 v9-v9n   json   32000   read_all      80     80  1.000
C       6 v9-v9n   json   32000   slice        126     80  0.635
C       6 v9-v9n   random 4000    load         697    677  0.971
C       6 v9-v9n   random 4000    prefix       222    215  0.968
C       6 v9-v9n   random 4000    read_all     219    215  0.982
C       6 v9-v9n   random 4000    slice        223    219  0.982
C       6 v9-v9n   random 32000   load         363    378  1.041
C       6 v9-v9n   random 32000   prefix       156    121  0.776
C       6 v9-v9n   random 32000   read_all     139    122  0.878
C       6 v9-v9n   random 32000   slice        162    123  0.759
C       6 v9-v9n   random 1000000 load         548    596  1.088
C       6 v9-v9n   random 1000000 prefix        49     48  0.980
C       6 v9-v9n   random 1000000 read_all     167    168  1.006
C       6 v9-v9n   random 1000000 slice        112     79  0.705
C       7 v9n-v9   docs   4000    load         848    851  1.004
C       7 v9n-v9   docs   4000    prefix       227    221  0.974
C       7 v9n-v9   docs   4000    read_all     227    223  0.982
C       7 v9n-v9   docs   4000    slice        229    225  0.983
C       7 v9n-v9   docs   32000   load         581    584  1.005
C       7 v9n-v9   docs   32000   prefix       170    127  0.747
C       7 v9n-v9   docs   32000   read_all     146    130  0.890
C       7 v9n-v9   docs   32000   slice        174    129  0.741
C       7 v9n-v9   json   4000    load         446    453  1.016
C       7 v9n-v9   json   4000    prefix       142    134  0.944
C       7 v9n-v9   json   4000    read_all     142    136  0.958
C       7 v9n-v9   json   4000    slice        142    134  0.944
C       7 v9n-v9   json   32000   load         241    239  0.992
C       7 v9n-v9   json   32000   prefix       113     78  0.690
C       7 v9n-v9   json   32000   read_all      79     80  1.013
C       7 v9n-v9   json   32000   slice        124     79  0.637
C       7 v9n-v9   random 4000    load         701    697  0.994
C       7 v9n-v9   random 4000    prefix       220    214  0.973
C       7 v9n-v9   random 4000    read_all     220    216  0.982
C       7 v9n-v9   random 4000    slice        223    219  0.982
C       7 v9n-v9   random 32000   load         366    369  1.008
C       7 v9n-v9   random 32000   prefix       162    121  0.747
C       7 v9n-v9   random 32000   read_all     141    123  0.872
C       7 v9n-v9   random 32000   slice        165    122  0.739
C       7 v9n-v9   random 1000000 load         533    550  1.032
C       7 v9n-v9   random 1000000 prefix        49     49  1.000
C       7 v9n-v9   random 1000000 read_all     166    165  0.994
C       7 v9n-v9   random 1000000 slice        113     77  0.681
C       8 v9-v9n   docs   4000    load         846    843  0.996
C       8 v9-v9n   docs   4000    prefix       227    223  0.982
C       8 v9-v9n   docs   4000    read_all     227    226  0.996
C       8 v9-v9n   docs   4000    slice        228    227  0.996
C       8 v9-v9n   docs   32000   load         596    585  0.982
C       8 v9-v9n   docs   32000   prefix       170    127  0.747
C       8 v9-v9n   docs   32000   read_all     147    130  0.884
C       8 v9-v9n   docs   32000   slice        176    128  0.727
C       8 v9-v9n   json   4000    load         438    442  1.009
C       8 v9-v9n   json   4000    prefix       142    135  0.951
C       8 v9-v9n   json   4000    read_all     145    135  0.931
C       8 v9-v9n   json   4000    slice        144    135  0.938
C       8 v9-v9n   json   32000   load         244    241  0.988
C       8 v9-v9n   json   32000   prefix       113     78  0.690
C       8 v9-v9n   json   32000   read_all      81     79  0.975
C       8 v9-v9n   json   32000   slice        128     81  0.633
C       8 v9-v9n   random 4000    load         695    694  0.999
C       8 v9-v9n   random 4000    prefix       223    216  0.969
C       8 v9-v9n   random 4000    read_all     218    215  0.986
C       8 v9-v9n   random 4000    slice        224    219  0.978
C       8 v9-v9n   random 32000   load         378    365  0.966
C       8 v9-v9n   random 32000   prefix       159    121  0.761
C       8 v9-v9n   random 32000   read_all     144    121  0.840
C       8 v9-v9n   random 32000   slice        164    121  0.738
C       8 v9-v9n   random 1000000 load         542    538  0.993
C       8 v9-v9n   random 1000000 prefix        51     48  0.941
C       8 v9-v9n   random 1000000 read_all     172    164  0.953
C       8 v9-v9n   random 1000000 slice        114     78  0.684
C       9 v9n-v9   docs   4000    load         852    851  0.999
C       9 v9n-v9   docs   4000    prefix       228    222  0.974
C       9 v9n-v9   docs   4000    read_all     229    220  0.961
C       9 v9n-v9   docs   4000    slice        232    220  0.948
C       9 v9n-v9   docs   32000   load         605    581  0.960
C       9 v9n-v9   docs   32000   prefix       172    126  0.733
C       9 v9n-v9   docs   32000   read_all     147    128  0.871
C       9 v9n-v9   docs   32000   slice        176    128  0.727
C       9 v9n-v9   json   4000    load         467    443  0.949
C       9 v9n-v9   json   4000    prefix       142    134  0.944
C       9 v9n-v9   json   4000    read_all     141    135  0.957
C       9 v9n-v9   json   4000    slice        144    133  0.924
C       9 v9n-v9   json   32000   load         241    242  1.004
C       9 v9n-v9   json   32000   prefix       111     78  0.703
C       9 v9n-v9   json   32000   read_all      80     79  0.988
C       9 v9n-v9   json   32000   slice        123     80  0.650
C       9 v9n-v9   random 4000    load         692    695  1.004
C       9 v9n-v9   random 4000    prefix       221    215  0.973
C       9 v9n-v9   random 4000    read_all     218    214  0.982
C       9 v9n-v9   random 4000    slice        223    217  0.973
C       9 v9n-v9   random 32000   load         365    368  1.008
C       9 v9n-v9   random 32000   prefix       155    122  0.787
C       9 v9n-v9   random 32000   read_all     139    127  0.914
C       9 v9n-v9   random 32000   slice        162    123  0.759
C       9 v9n-v9   random 1000000 load         554    565  1.020
C       9 v9n-v9   random 1000000 prefix        50     49  0.980
C       9 v9n-v9   random 1000000 read_all     168    166  0.988
C       9 v9n-v9   random 1000000 slice        113     79  0.699
C      10 v9-v9n   docs   4000    load         855    847  0.991
C      10 v9-v9n   docs   4000    prefix       227    221  0.974
C      10 v9-v9n   docs   4000    read_all     227    223  0.982
C      10 v9-v9n   docs   4000    slice        231    222  0.961
C      10 v9-v9n   docs   32000   load         573    573  1.000
C      10 v9-v9n   docs   32000   prefix       169    128  0.757
C      10 v9-v9n   docs   32000   read_all     144    130  0.903
C      10 v9-v9n   docs   32000   slice        172    128  0.744
C      10 v9-v9n   json   4000    load         447    458  1.025
C      10 v9-v9n   json   4000    prefix       142    135  0.951
C      10 v9-v9n   json   4000    read_all     142    136  0.958
C      10 v9-v9n   json   4000    slice        143    134  0.937
C      10 v9-v9n   json   32000   load         235    231  0.983
C      10 v9-v9n   json   32000   prefix       111     79  0.712
C      10 v9-v9n   json   32000   read_all      79     80  1.013
C      10 v9-v9n   json   32000   slice        122     78  0.639
C      10 v9-v9n   random 4000    load         689    714  1.036
C      10 v9-v9n   random 4000    prefix       221    215  0.973
C      10 v9-v9n   random 4000    read_all     217    215  0.991
C      10 v9-v9n   random 4000    slice        222    218  0.982
C      10 v9-v9n   random 32000   load         362    364  1.006
C      10 v9-v9n   random 32000   prefix       159    121  0.761
C      10 v9-v9n   random 32000   read_all     138    121  0.877
C      10 v9-v9n   random 32000   slice        161    121  0.752
C      10 v9-v9n   random 1000000 load         537    541  1.007
C      10 v9-v9n   random 1000000 prefix        49     48  0.980
C      10 v9-v9n   random 1000000 read_all     164    164  1.000
C      10 v9-v9n   random 1000000 slice        111     77  0.694
C      11 v9n-v9   docs   4000    load         840    835  0.994
C      11 v9n-v9   docs   4000    prefix       228    221  0.969
C      11 v9n-v9   docs   4000    read_all     227    220  0.969
C      11 v9n-v9   docs   4000    slice        230    220  0.957
C      11 v9n-v9   docs   32000   load         586    574  0.980
C      11 v9n-v9   docs   32000   prefix       170    125  0.735
C      11 v9n-v9   docs   32000   read_all     148    128  0.865
C      11 v9n-v9   docs   32000   slice        177    127  0.718
C      11 v9n-v9   json   4000    load         440    443  1.007
C      11 v9n-v9   json   4000    prefix       140    134  0.957
C      11 v9n-v9   json   4000    read_all     141    134  0.950
C      11 v9n-v9   json   4000    slice        143    133  0.930
C      11 v9n-v9   json   32000   load         239    245  1.025
C      11 v9n-v9   json   32000   prefix       112     77  0.688
C      11 v9n-v9   json   32000   read_all      79     79  1.000
C      11 v9n-v9   json   32000   slice        121     80  0.661
C      11 v9n-v9   random 4000    load         688    680  0.988
C      11 v9n-v9   random 4000    prefix       219    214  0.977
C      11 v9n-v9   random 4000    read_all     217    214  0.986
C      11 v9n-v9   random 4000    slice        222    216  0.973
C      11 v9n-v9   random 32000   load         360    357  0.992
C      11 v9n-v9   random 32000   prefix       155    120  0.774
C      11 v9n-v9   random 32000   read_all     138    121  0.877
C      11 v9n-v9   random 32000   slice        161    120  0.745
C      11 v9n-v9   random 1000000 load         535    540  1.009
C      11 v9n-v9   random 1000000 prefix        48     49  1.021
C      11 v9n-v9   random 1000000 read_all     166    167  1.006
C      11 v9n-v9   random 1000000 slice        111     78  0.703
C      12 v9-v9n   docs   4000    load         839    856  1.020
C      12 v9-v9n   docs   4000    prefix       228    222  0.974
C      12 v9-v9n   docs   4000    read_all     225    220  0.978
C      12 v9-v9n   docs   4000    slice        227    223  0.982
C      12 v9-v9n   docs   32000   load         572    574  1.003
C      12 v9-v9n   docs   32000   prefix       169    126  0.746
C      12 v9-v9n   docs   32000   read_all     145    128  0.883
C      12 v9-v9n   docs   32000   slice        172    126  0.733
C      12 v9-v9n   json   4000    load         439    441  1.005
C      12 v9-v9n   json   4000    prefix       141    136  0.965
C      12 v9-v9n   json   4000    read_all     142    134  0.944
C      12 v9-v9n   json   4000    slice        141    135  0.957
C      12 v9-v9n   json   32000   load         237    241  1.017
C      12 v9-v9n   json   32000   prefix       112     78  0.696
C      12 v9-v9n   json   32000   read_all      79     79  1.000
C      12 v9-v9n   json   32000   slice        122     79  0.648
C      12 v9-v9n   random 4000    load         698    697  0.999
C      12 v9-v9n   random 4000    prefix       219    214  0.977
C      12 v9-v9n   random 4000    read_all     219    213  0.973
C      12 v9-v9n   random 4000    slice        223    216  0.969
C      12 v9-v9n   random 32000   load         363    358  0.986
C      12 v9-v9n   random 32000   prefix       159    121  0.761
C      12 v9-v9n   random 32000   read_all     138    122  0.884
C      12 v9-v9n   random 32000   slice        164    121  0.738
C      12 v9-v9n   random 1000000 load         558    537  0.962
C      12 v9-v9n   random 1000000 prefix        49     48  0.980
C      12 v9-v9n   random 1000000 read_all     165    165  1.000
C      12 v9-v9n   random 1000000 slice        112     77  0.688
diff --git a/src/backend/access/common/toast_compression.c 
b/src/backend/access/common/toast_compression.c
index d161634c25b..27ea82ece0d 100644
--- a/src/backend/access/common/toast_compression.c
+++ b/src/backend/access/common/toast_compression.c
@@ -52,21 +52,6 @@ int                  default_toast_compression = 
DEFAULT_TOAST_COMPRESSION;
  * frame's window plus a block, about 2.5MB at the default compression level;
  * zstd shrinks that buffer by itself once later uses no longer need it.
  */
-static ZSTD_DCtx *zstd_dctx = NULL;
-
-static ZSTD_DCtx *
-zstd_get_dctx(void)
-{
-       if (zstd_dctx == NULL)
-       {
-               zstd_dctx = ZSTD_createDCtx();
-               if (zstd_dctx == NULL)
-                       elog(ERROR, "could not create zstd decompression 
context");
-       }
-       else
-               ZSTD_DCtx_reset(zstd_dctx, ZSTD_reset_session_only);
-       return zstd_dctx;
-}
 #endif
 
 #define NO_COMPRESSION_SUPPORT(method) \
@@ -380,11 +365,10 @@ zstd_decompress_datum(const varlena *value)
         * content size; also check that it matches the size in our header, as
         * pglz does.
         */
-       rawsize = ZSTD_decompressDCtx(zstd_get_dctx(),
-                                                                 
VARDATA(result),
-                                                                 
VARDATA_COMPRESSED_GET_EXTSIZE(value),
-                                                                 (const char 
*) value + VARHDRSZ_COMPRESSED_LONG,
-                                                                 
VARSIZE(value) - VARHDRSZ_COMPRESSED_LONG);
+       rawsize = ZSTD_decompress(VARDATA(result),
+                                                         
VARDATA_COMPRESSED_GET_EXTSIZE(value),
+                                                         (const char *) value 
+ VARHDRSZ_COMPRESSED_LONG,
+                                                         VARSIZE(value) - 
VARHDRSZ_COMPRESSED_LONG);
        if (ZSTD_isError(rawsize) ||
                rawsize != VARDATA_COMPRESSED_GET_EXTSIZE(value))
                ereport(ERROR,
@@ -437,7 +421,9 @@ zstd_decompress_datum_slice(const varlena *value, int32 
slicelength)
        /* allocate memory for the uncompressed slice */
        result = (varlena *) palloc(slicelength + VARHDRSZ);
 
-       dctx = zstd_get_dctx();
+       dctx = ZSTD_createDCtx();
+       if (dctx == NULL)
+               elog(ERROR, "could not create zstd decompression context");
 
        inbuf.src = (const char *) value + VARHDRSZ_COMPRESSED_LONG;
        inbuf.size = VARSIZE(value) - VARHDRSZ_COMPRESSED_LONG;
@@ -470,6 +456,9 @@ zstd_decompress_datum_slice(const varlena *value, int32 
slicelength)
                }
        }
 
+       /* release the context before any possible error is thrown */
+       ZSTD_freeDCtx(dctx);
+
        if (failed)
                ereport(ERROR,
                                (errcode(ERRCODE_DATA_CORRUPTED),
#!/bin/bash
# Which decompression branch substr(v, 500000, 100) takes on 1 MB zstd values
# in a UTF8 and a SQL_ASCII database, and how many page faults the backend
# takes per value with the reused context and with a fresh one.  No timing.
#   branch_faults.sh REUSE_BINDIR FRESH_BINDIR WORKDIR
#     REUSE_BINDIR  bin/ of a build with the 0003 decode code (reused DCtx)
#     FRESH_BINDIR  bin/ of the same tree with the reuse undone
#                   (nocfbot-v9n-without-reuse.diff.txt: the v7 decode code)
#     WORKDIR       empty scratch directory; the cluster is ~30 MB
# One small cluster (shared_buffers 32MB), 20 values of 1 MB per database,
# the "random" corpus of bench.sh.  Queries run in single-user mode, under
# gdb (breakpoints at the entry of zstd_decompress_datum, the full branch,
# and zstd_decompress_datum_slice, printing slicelength) and under
# perf stat -e page-faults (one query vs six; faults per value =
# (six - one) / 5 / 20, which cancels startup).  Both builds must share the
# catalog version, as they do when only toast_compression.c differs.
set -eu
R=$1 F=$2 W=$3
D=$W/cl; P=$((56400 + RANDOM % 100))
"$R/initdb" -D $D -A trust --no-sync -U postgres -E SQL_ASCII --locale=C 
>/dev/null
cat >> $D/postgresql.conf <<CONF
port = $P
unix_socket_directories = '$W'
listen_addresses = ''
shared_buffers = 32MB
autovacuum = off
default_toast_compression = zstd
CONF
"$R/pg_ctl" -D $D -l $W/log -w start >/dev/null
q() { "$R/psql" -X -qAt -h $W -p $P -U postgres -v ON_ERROR_STOP=1 "$@"; }
q -d postgres -c "CREATE DATABASE u8 ENCODING 'UTF8' TEMPLATE template0 
LC_COLLATE 'C' LC_CTYPE 'C'"
q -d postgres -c "CREATE DATABASE sqlascii ENCODING 'SQL_ASCII' TEMPLATE 
template0 LC_COLLATE 'C' LC_CTYPE 'C'"
for db in u8 sqlascii; do
  q -d $db -c "SELECT setseed(0.42)" -c "CREATE TABLE t (id int, v text)" \
    -c "INSERT INTO t SELECT g, left(string_agg(md5(random()::text) || 
encode(sha256(random()::text::bytea), 'base64'), ''), 1000000)
          FROM generate_series(1, 20) g, generate_series(1, 1000000 / 76 + 1) i 
GROUP BY g"
  q -d $db -c "SELECT format('db=%s encoding=%s eml=%s values=%s bytes=%s 
method=%s slice_md5=%s', current_database(),
                 current_setting('server_encoding'), 
pg_encoding_max_length(pg_char_to_encoding(current_setting('server_encoding'))),
                 count(*), min(octet_length(v)), string_agg(DISTINCT 
pg_column_compression(v), ','),
                 md5(string_agg(substr(v, 500000, 100), '' ORDER BY id))) FROM 
t"
done
"$R/pg_ctl" -D $D -m fast -w stop >/dev/null
cat > $W/br.gdb <<'GDB'
set pagination off
set confirm off
break *zstd_decompress_datum
commands
silent
continue
end
break *zstd_decompress_datum_slice
commands
silent
printf "slicelength=%d\n", $rsi
continue
end
run
info breakpoints
GDB
single() { "$1/postgres" --single -D $D -c shared_buffers=32MB $2; }
for db in u8 sqlascii; do
  for e in "substr(v, 500000, 100)" "substr(v, 1, 100)" "v || 'x'"; do
    out=$(echo "SELECT sum(length($e)) FROM t" | gdb -q -batch -x $W/br.gdb 
--args "$R/postgres" --single -D $D -c shared_buffers=32MB $db 2>&1)
    full=$(echo "$out" | sed -n '/^Num/,$p' | awk 
'/<zstd_decompress_datum>/{s=1;next} /<zstd_decompress_datum_slice>/{s=2;next} 
/already hit/{h[s]=$4} END{print (h[1]?h[1]:0)}')
    sl=$(echo "$out" | sed -n '/^Num/,$p' | awk 
'/<zstd_decompress_datum_slice>/{s=1;next} s&&/already hit/{print $4; exit}')
    lens=$(echo "$out" | grep -oE 'slicelength=[0-9]+' | sort -u | tr '\n' ' ')
    echo "branch db=$db expr=\"$e\" full_entries=$full slice_entries=${sl:-0} 
${lens}"
  done
done
pf() {  # bindir db expr n
  for i in $(seq $4); do echo "SELECT sum(length($3)) FROM t;"; done |
    perf stat -x, -e page-faults "$1/postgres" --single -D $D -c 
shared_buffers=32MB $2 2>&1 >/dev/null |
    awk -F, '/page-faults/{print $1}'
}
for c in "sqlascii|substr(v, 500000, 100)" "sqlascii|substr(v, 1, 100)" 
"sqlascii|v || 'x'" "u8|substr(v, 500000, 100)"; do
  db=${c%%|*} e=${c#*|}
  for rep in 1 2 3; do
    for b in reuse fresh; do
      [ $b = reuse ] && bin=$R || bin=$F
      one=$(pf $bin $db "$e" 1); six=$(pf $bin $db "$e" 6)
      echo "faults db=$db expr=\"$e\" build=$b rep=$rep one=$one six=$six 
per_value=$(( (six - one) / 100 ))"
    done
  done
done
rm -rf $D $W/br.gdb $W/log
db=u8 encoding=UTF8 eml=4 values=20 bytes=1000000 method=zstd 
slice_md5=b64e80e19d753cc3bb413f32a8dd3aa2

db=sqlascii encoding=SQL_ASCII eml=1 values=20 bytes=1000000 method=zstd 
slice_md5=b64e80e19d753cc3bb413f32a8dd3aa2
branch db=u8 expr="substr(v, 500000, 100)" full_entries=20 slice_entries=0 
branch db=u8 expr="substr(v, 1, 100)" full_entries=0 slice_entries=20 
slicelength=400 
branch db=u8 expr="v || 'x'" full_entries=20 slice_entries=0 
branch db=sqlascii expr="substr(v, 500000, 100)" full_entries=0 
slice_entries=20 slicelength=500099 
branch db=sqlascii expr="substr(v, 1, 100)" full_entries=0 slice_entries=20 
slicelength=100 
branch db=sqlascii expr="v || 'x'" full_entries=20 slice_entries=0 
faults db=sqlascii expr="substr(v, 500000, 100)" build=reuse rep=1 one=4387 
six=4389 per_value=0
faults db=sqlascii expr="substr(v, 500000, 100)" build=fresh rep=1 one=12011 
six=53637 per_value=416
faults db=sqlascii expr="substr(v, 500000, 100)" build=reuse rep=2 one=4388 
six=4391 per_value=0
faults db=sqlascii expr="substr(v, 500000, 100)" build=fresh rep=2 one=12010 
six=53636 per_value=416
faults db=sqlascii expr="substr(v, 500000, 100)" build=reuse rep=3 one=4389 
six=4391 per_value=0
faults db=sqlascii expr="substr(v, 500000, 100)" build=fresh rep=3 one=12010 
six=53636 per_value=416
faults db=sqlascii expr="substr(v, 1, 100)" build=reuse rep=1 one=4173 six=4171 
per_value=0
faults db=sqlascii expr="substr(v, 1, 100)" build=fresh rep=1 one=4206 six=4208 
per_value=0
faults db=sqlascii expr="substr(v, 1, 100)" build=reuse rep=2 one=4172 six=4176 
per_value=0
faults db=sqlascii expr="substr(v, 1, 100)" build=fresh rep=2 one=4209 six=4209 
per_value=0
faults db=sqlascii expr="substr(v, 1, 100)" build=reuse rep=3 one=4174 six=4174 
per_value=0
faults db=sqlascii expr="substr(v, 1, 100)" build=fresh rep=3 one=4212 six=4209 
per_value=0
faults db=sqlascii expr="v || 'x'" build=reuse rep=1 one=16498 six=79698 
per_value=632
faults db=sqlascii expr="v || 'x'" build=fresh rep=1 one=16458 six=79563 
per_value=631
faults db=sqlascii expr="v || 'x'" build=reuse rep=2 one=16498 six=79697 
per_value=631
faults db=sqlascii expr="v || 'x'" build=fresh rep=2 one=16458 six=79564 
per_value=631
faults db=sqlascii expr="v || 'x'" build=reuse rep=3 one=16498 six=79698 
per_value=632
faults db=sqlascii expr="v || 'x'" build=fresh rep=3 one=16458 six=79566 
per_value=631
faults db=u8 expr="substr(v, 500000, 100)" build=reuse rep=1 one=16492 
six=79682 per_value=631
faults db=u8 expr="substr(v, 500000, 100)" build=fresh rep=1 one=16455 
six=79555 per_value=631
faults db=u8 expr="substr(v, 500000, 100)" build=reuse rep=2 one=16491 
six=79683 per_value=631
faults db=u8 expr="substr(v, 500000, 100)" build=fresh rep=2 one=16454 
six=79555 per_value=631
faults db=u8 expr="substr(v, 500000, 100)" build=reuse rep=3 one=16492 
six=79682 per_value=631
faults db=u8 expr="substr(v, 500000, 100)" build=fresh rep=3 one=16455 
six=79552 per_value=630

Reply via email to