Wikimedia typed-layout and RLE comparison

Generated 2026-09-22T14:38:21.196479+00:00. Run: wikimedia-rle-matrix-20260922T035401Z.

Each variant receives 1,483,700,913 increments in source order. All variants run concurrently from empty sets using the same frozen Release executable, merge exponent 0.5, Unix sockets, and ordinary reply-per-command redis-cli.

UUID members are zero-extended numeric page IDs. Their longer command file is generated before timing. Digests normalize UUIDs back to decimal page IDs and compare against an independent reference, including numeric tie order. Compare RLE on/off within each layout; UUID and integer wire sizes differ.

Layout RLE Feed status Seconds Increments/s Final RSS GiB Object GiB Compressed leaves Used base score MiB
int32-float32 off PASS 34,211.488 43,368 2.089 2.034 0 312.069
int32-float32 on PASS 34,322.285 43,229 1.626 1.573 288444 3.393
int32-float64 off PASS 34,667.177 42,798 4.022 4.001 0 626.996
int32-float64 on PASS 34,679.061 42,784 2.553 2.519 577769 13.406
int64-float32 off PASS 34,669.548 42,796 4.022 4.001 0 313.498
int64-float32 on PASS 34,796.175 42,640 3.067 3.028 577769 6.703
int64-float64 off PASS 34,555.511 42,937 4.022 4.001 0 626.996
int64-float64 on PASS 34,845.986 42,579 3.104 3.071 577769 13.406
uuid-float32 off PASS 36,559.638 40,583 5.043 5.017 0 314.373
uuid-float32 on PASS 36,897.240 40,212 4.636 4.594 726602 8.406
uuid-float64 off PASS 37,071.213 40,023 5.922 5.897 0 630.251
uuid-float64 on PASS 37,317.990 39,758 5.024 4.979 876790 20.248

Positive savings below mean RLE used less time or memory.

Layout Feed time saved RSS saved Object allocation saved
int32-float32 -0.32% +22.19% +22.68%
int32-float64 -0.03% +36.52% +37.03%
int64-float32 -0.37% +23.74% +24.33%
int64-float64 -0.84% +22.81% +23.25%
uuid-float32 -0.92% +8.08% +8.44%
uuid-float64 -0.67% +15.15% +15.56%

Full-state verification

goblin-packed-int32-float32-rle-off: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-int32-float32-rle-on: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-int32-float64-rle-off: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-int32-float64-rle-on: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-int64-float32-rle-off: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-int64-float32-rle-on: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-int64-float64-rle-off: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-int64-float64-rle-on: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-uuid-float32-rle-off: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-uuid-float32-rle-on: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-uuid-float64-rle-off: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
goblin-packed-uuid-float64-rle-on: PASS: 80798328 members, score_sum=1483700913, max_score=2162914.0
all engines contain the same page_id -> edit-count mapping

RSS is sampled process residency immediately after feed drain, before verification; it is not peak RSS. Object allocation is the separate GOBLIN.MEMORY counter. No final forced compaction is performed. This is one concurrent trial per variant, including client and protocol costs; it does not establish maximum throughput or statistical significance.