Date: 2026-06-13
This ledger appends the post-watermark/CommitRank benchmark run for the native
PersistentARTrieU64Compact implementation. It does not replace the earlier
pgmcp artifacts 111 and 112; those remain historical pre-alignment
measurements.
PersistentARTrieU64Compact<V, S> uses
AtomicNodePtr<OverlayNode<U64Key<U64_CX_PREFIX_COMPACT>, V>>.CommitRank, and advance CommittedWatermark.checkpoint_lsn and retains WAL
tail records for recovery.PART_U64_FIXED_SAMPLES=1 cargo bench --features persistent-artrie --bench persistent_artrie_u64_native_benchmarks
The benchmark uses seeded time-series u64 sequences. Temporary benchmark
directories are created under target/bench-scratch, not /tmp.
| Metric | Experiment | Hypothesis | Work item | Verdict |
|---|---|---|---|---|
lookup_ns_per_query | 53 | 53 | experiment-u64-compact-lookup-after-watermark-alignment-1b4e33 | accepted |
parallel_ns_per_read | 54 | 54 | experiment-u64-compact-parallel-read-write-latency-0a113e | accepted |
checkpoint_bytes_per_entry | 55 | 55 | experiment-u64-compact-checkpoint-density-b2cb22 | accepted |
Raw benchmark output was also attached to pgmcp artifact 132.
| Metric | Control | Treatment | Welch result |
|---|---|---|---|
| Lookup latency | 455.352 ns/query byte-encoded u64 | 357.248 ns/query native prefix-4 | accepted, p = 2.82e-35, Cohen's d = -3.87 |
| Parallel read latency with one writer | 204.304 ns/read byte-encoded u64 | 148.347 ns/read native prefix-4 | accepted, p = 4.42e-9, Cohen's d = -1.24 |
| Checkpoint density | 469.759 bytes/entry prefix-3 | 453.982 bytes/entry prefix-4 | accepted, p = 4.61e-127, Cohen's d = -89.00 |
| Checkpoint disk bytes | 1,585,249 byte-encoded u64 | 929,096 native prefix-4 | scalar observation, 41.39% smaller |
Prefix-4 lookup was not statistically faster than prefix-3 lookup in this
registered run (357.248 ns/query versus 347.563 ns/query, Welch
p = 0.0639). Prefix-4 remains the default because the registered storage
density hypothesis was accepted and native prefix-4 still beat the byte-encoded
u64 control on lookup and the concurrent reader/writer workload.
metric=lookup_ns_per_query,arm=control_encoded_u64_as_bytes,unit=ns/query,samples=438.649414;428.642700;445.021362;423.277283;427.748047;450.867432;412.909729;446.995911;446.887695;512.362671;471.864197;461.162781;426.332458;453.950012;444.178101;458.923401;449.897522;470.207031;467.202637;483.797852;492.997986;463.855286;461.181152;412.694519;435.462280;488.285706;432.136292;425.002380;452.198669;440.235107;461.709473;462.176025;433.680359;435.977112;462.785706;456.771545;456.597290;470.497498;455.872620;452.279968;457.771362;437.160461;493.974609;442.947144;474.051575;494.686401;467.211243;481.941284;490.339172;463.875488;445.720947
metric=lookup_ns_per_query,arm=treatment_overlay_cx_prefix4,unit=ns/query,samples=337.187744;372.869324;338.223022;311.174133;331.382690;323.653809;390.238647;358.830933;333.739441;429.594788;393.982300;366.081543;346.093811;341.161926;332.784851;349.856384;335.658936;370.679504;363.842834;367.238525;336.481445;333.927734;347.059326;342.617310;381.833435;403.855774;363.658813;354.505676;323.190857;393.325012;333.154236;374.758301;327.307556;310.887939;337.218262;397.455750;342.131775;326.794556;321.378967;331.742859;386.436279;391.355347;334.145508;389.093323;380.238037;403.512756;361.942322;358.380249;408.837769;372.028503;356.126831
metric=lookup_ns_per_query,arm=control_overlay_cx_prefix3,unit=ns/query,samples=359.636292;358.963623;355.923767;319.627625;361.460999;315.016846;325.798340;303.418945;364.418213;449.429138;345.589905;354.881775;359.681519;354.371765;334.202332;334.542358;330.669067;321.517151;352.700500;330.930786;325.089661;332.672302;313.811584;347.431763;324.608337;351.528870;345.203430;346.142700;358.893860;364.196899;334.703796;364.384644;338.380188;332.766541;319.362244;371.640259;355.918274;367.197632;335.725647;384.289856;327.730103;367.405518;326.623901;382.168579;355.706116;343.790222;366.497437;364.908142;362.096375;323.821960;358.258545
metric=parallel_ns_per_read,arm=treatment_overlay_cx_prefix4,unit=ns/read,samples=111.460490;165.397552;157.453948;160.439396;128.785073;97.627719;151.016656;131.552927;175.855792;300.337927;136.608333;209.403396;221.093250;193.378354;154.082990;254.882760;132.920615;142.545417;139.624677;132.798510;175.089656;193.549000;135.369427;162.151813;100.370219;88.075573;118.494021;112.022490;176.567667;135.366604;155.143542;108.442167;91.548708;84.008292;101.423677;131.094448;160.671833;165.831813;97.845115;175.880010;87.912875;194.232490;168.412958;108.084312;121.022875;232.334344;154.955177;125.065125;142.340229;121.163469;143.973333
metric=parallel_ns_per_read,arm=control_encoded_u64_as_bytes,unit=ns/read,samples=245.567302;162.197417;240.460333;214.821156;209.629552;244.886844;250.508125;159.296615;183.973875;254.565917;229.531104;242.170875;246.443969;264.791854;262.615323;232.459146;178.437042;194.458531;226.176312;226.211906;234.079208;209.784542;203.075063;225.411958;223.754542;247.605865;228.928406;202.467344;231.468115;131.116781;136.420896;135.048292;118.399260;199.676031;160.539604;172.375042;247.398917;92.589333;131.296500;173.130333;190.209031;221.019375;267.505448;263.920000;149.259802;285.586875;209.937125;155.971885;136.964542;147.257365;218.118781
metric=checkpoint_bytes_per_entry,arm=control_overlay_cx_prefix3,unit=bytes/entry,samples=469.673340;469.683594;469.977539;469.775879;469.722656;469.785645;469.585449;469.521484;469.937988;469.768555;469.513672;469.943359;469.904785;469.899414;469.617676;469.740723;469.773438;469.628906;469.625000;469.717285;469.831543;469.820801;469.807129;469.628418;469.887695;469.684570;469.750977;469.911621;469.623047;469.942871;469.793457;469.776367;469.850586;469.782227;469.712891;469.886719;469.773438;469.910156;469.715332;469.749023;469.729004;469.833008;469.712891;469.672852;469.795410;469.728516;469.831543;469.681152;469.725586;469.727539;469.618652
metric=checkpoint_bytes_per_entry,arm=treatment_overlay_cx_prefix4,unit=bytes/entry,samples=453.926270;454.144043;454.120605;453.845703;453.853516;454.087402;454.143555;454.030762;453.910156;453.362305;454.022949;453.805664;454.023438;454.079102;453.821777;454.103516;454.062988;453.442383;454.256348;454.055664;454.023438;454.610840;453.925781;453.966797;454.006348;454.047363;454.296875;453.700684;454.071289;453.402344;454.119629;454.175781;453.700684;454.071777;453.990234;454.127441;454.038574;453.821289;454.200195;454.111816;454.030762;453.805176;453.660645;453.950195;453.877441;454.103516;453.950195;454.336914;453.941895;453.748535;454.152344
metric=checkpoint_disk_bytes,arm=control_encoded_u64_as_bytes,unit=bytes,samples=1585249
metric=checkpoint_disk_bytes,arm=treatment_overlay_cx_prefix4,unit=bytes,samples=929096
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |