Benchmarks

Every comparison, exact figures.

The featured telemetry size comparison in full, the two REDLINE verified-creation campaigns kept apart, how each figure is derived, what was verified, and the historical records kept separate from all of it.

All configurations

Complete archive bytes on the 342,409,609-byte telemetry capture, measured 2026-09-06
ConfigurationArchive bytesDecimal MBCompared with ZJX compactCompletion and restore checkCreation wall s (indicative)
ZJX 1.28.0 fast4,412,9844.41 MBZJX compact is same sizecompleted, restored and matched187.7
zpaq -m57,125,6747.13 MBZJX is 38.1% smaller (strongest comparator)completed, restored and matched199.2
zstd --ultra -22 --long=31 (tar)7,280,1107.28 MBZJX is 39.4% smallercompleted, restored and matched460.4
brotli -q 11 (tar)7,345,5387.35 MBZJX is 39.9% smallercompleted, restored and matched293.2
xz -9e (tar)7,612,0527.61 MBZJX is 42.0% smallercompleted, restored and matched350.3
zstd -19 --long=31 (tar)7,800,3287.80 MBZJX is 43.4% smallercompleted, restored and matched156.9
zstd -19 (tar)8,149,0508.15 MBZJX is 45.8% smallercompleted, restored and matched149.9
7-Zip LZMA2 -mx=9, single thread9,392,5189.39 MBZJX is 53.0% smallercompleted, restored and matched64.6
7-Zip LZMA2 -mx=99,666,9629.67 MBZJX is 54.3% smallercompleted, restored and matched40.7
RAR5 -m59,842,9209.84 MBZJX is 55.2% smallercompleted, restored and matched10.0
7-Zip PPMd -mx=912,612,27012.61 MBZJX is 65.0% smallercompleted, restored and matched14.2
bzip2 -9 (tar)34,456,46834.46 MBZJX is 87.2% smallercompleted, restored and matched25.3
gzip -9 (tar)40,176,03140.18 MBZJX is 89.0% smallercompleted, restored and matched4.9
zip -9 (deflate)40,176,33440.18 MBZJX is 89.0% smallercompleted, restored and matched4.9
lz4 -12 (tar)56,999,95857.00 MBZJX is 92.3% smallercompleted, restored and matched8.4

The strongest comparator is the smallest completed and verified non-ZJX archive. Percentages are 100 × (1 − ZJX bytes ÷ comparator bytes); a negative result would read as larger, an equal result as same size.

Every row on one scale

A linear axis from zero to the largest archive, 57.00 MB. No row is rescaled, truncated, or omitted.

  1. ZJX 1.28.0 compact4,412,984
  2. ZJX 1.28.0 fast4,412,984
  3. zpaq -m57,125,674
  4. zstd --ultra -22 --long=31 (tar)7,280,110
  5. brotli -q 11 (tar)7,345,538
  6. xz -9e (tar)7,612,052
  7. zstd -19 --long=31 (tar)7,800,328
  8. zstd -19 (tar)8,149,050
  9. 7-Zip LZMA2 -mx=9, single thread9,392,518
  10. 7-Zip LZMA2 -mx=99,666,962
  11. RAR5 -m59,842,920
  12. 7-Zip PPMd -mx=912,612,270
  13. bzip2 -9 (tar)34,456,468
  14. gzip -9 (tar)40,176,031
  15. zip -9 (deflate)40,176,334
  16. lz4 -12 (tar)56,999,958

Derivation

Exact bytes are the stored facts; percentages and megabytes are derived at build time and in the browser from the same module, so every surface rounds the same way.

signed_reduction_percent = 100 × (1 − Z / C)   with comparator bytes C > 0
raw_reduction_percent    = 100 × (1 − Z / R)   with raw input bytes R > 0
MB = bytes / 1,000,000

Featured values: Z = 4,412,984, C = 7,125,674, R = 342,409,609. Result: 38.1% against the comparator, 98.7% against raw input. Nothing is calculated from rounded megabyte strings.

Timing is indicative only

Wall time and peak memory in the size campaign were observed in single sequential runs on the ZJX laboratory host under an exclusive quiesced lease, with no other workload running. They are recorded in the source note as observations without repetition statistics, not as release performance evidence; ZJX performance qualification is a separate campaign under its own measurement law. Use them to judge order of magnitude, nothing finer. The only speed figures this site claims are the qualified REDLINE results in the next section, on their own cohorts and comparators.

REDLINE verified-creation campaigns, kept apart

Verified creation: archive creation plus an independent integrity check, 12 paired rounds per campaign, class-weighted geometric mean of per-round ratios, 95% bootstrap intervals. Subject: ZJX 1.29.0 at its default invocation: --objective ultrafast, four workers, then an independent test. Comparators: tar | zstd -1 (default, single admitted thread), verified by zstd -t, and tar | zstd -1 -T4 (four threads, the matched thread budget). Host: Quiesced laboratory host under an exclusive lease, 8 logical CPUs; the measured executable is the one shipped in the released package. A ratio is comparator time over ZJX time, so a value above 1 means ZJX was faster; every loss is printed as a loss. The two campaigns measured different cohorts and their figures are never combined into one statistic.

Development cohort (RG017)

Sealed development cohort: silesia, enwik8, and a synthetic deduplication case; 12 paired rounds, 468 of 468 cells usable. Development cohort, not held out; the recipe was calibrated on these corpora.

1.247x the verified-creation speed of default tar | zstd -195% [1.223, 1.267]; Bonferroni over the three preregistered primary comparisons, lower bound 1.221; archive bytes 1.0005x the comparator's

Against default tar | zstd -1

  1. ZJX 1.29.0 default: ultrafast, four workers1.247x, faster
  2. tar | zstd -1, default1.00, the reference

Primary comparison: 95% [1.223, 1.267], Bonferroni-adjusted lower bound 1.221. About 1.19x the comparator's CPU.

Against the matched thread budget

  1. ZJX 1.29.0 default: ultrafast, four workers0.820, slower
  2. tar | zstd -1 -T41.00, the reference

ZJX keeps 82.0% of the four-thread comparator's throughput, 95% [0.807, 0.832]; -T0 measured the same. Exploratory comparison, disclosed because it is a loss.

Held-out cohort (RG018, one shot)

Four sealed members plus six privately held-out cases (about 1.86 GB, six workload classes) selected by a rule frozen before any measurement; ten classes, 12 paired rounds, 360 of 360 cells usable, run once. Held out and unseen at the freeze. The gate passed on its preregistered class structure with a thin margin; the six held-out cases alone would not have met the lower bound.

1.1959x the verified-creation speed of default tar | zstd -195% [1.1867, 1.2043]; 6 of 6 held-out cases restored exactly before the timed rounds

Against default tar | zstd -1

  1. ZJX 1.29.0 default: ultrafast, four workers1.1959x, faster
  2. tar | zstd -1, default1.00, the reference

Reported lane: 95% [1.1867, 1.2043]. Faster on seven of ten cases, slower on the three smallest archives.

The preregistered gate: matched thread budget

  1. ZJX 1.29.0 default: ultrafast, four workers0.8236, slower
  2. tar | zstd -1 -T41.00, the reference

Class-weighted point 0.8236; 95% bootstrap interval on a single preregistered comparison; no familywise adjustment: lower bound 0.8170 against a required 0.80. The gate passed by a thin margin. ZJX was slower on 7 of 10 cases, and the six held-out cases alone read 0.7917 [0.7832, 0.8004].

Development cohort (RG017): worker sweep and thread budgets

Sealed development cohort: silesia, enwik8, and a synthetic deduplication case; 12 paired rounds, 468 of 468 cells usable. Development cohort, not held out; the recipe was calibrated on these corpora. Archive bytes were identical at every worker count and byte-identical to both earlier release candidates. The default invocation costs about 1.19x the CPU of default tar | zstd -1 and admits about 65 MiB at the default 4 MiB units and four workers (about 71 MB at four workers against about 12 MB at one).

ZJX 1.29.0 ultrafast at each worker setting against default tar | zstd -1, paired per-round ratios (comparator over ZJX)
ZJX settingRatio95% bootstrapReading
--workers 10.548x[0.539, 0.555]ZJX slower
--workers 21.062x[1.046, 1.077]ZJX faster
default invocation (four workers)1.247x[1.223, 1.267]ZJX faster
--workers 4, explicit1.261x[1.242, 1.282]ZJX faster
--workers 80.976x[0.962, 0.987]ZJX slower
The ZJX 1.29.0 default invocation against tar | zstd -1 at each thread budget (comparator over ZJX)
ComparatorRatio95% bootstrapReading
tar | zstd -1 -T20.964x[0.947, 0.980]exploratory; ZJX slower
tar | zstd -1 -T40.820x[0.807, 0.832]exploratory; ZJX slower
tar | zstd -1 -T00.820x[0.806, 0.836]exploratory; ZJX slower

Negative results kept: eight workers is slower than four and slower than the default comparator; the four-worker default trails the comparator at two, four, and all threads. ZJX 1.29 is not the fastest archiver or compressor and is not generally superior to zstd. tar | zstd -1 with four or all threads is about 1.22x faster than the ZJX default on the development cohort and faster on 7 of 10 held-out cases. No leadership claim is made.

Held-out cohort (RG018): every case, both lanes

Four sealed members plus six privately held-out cases (about 1.86 GB, six workload classes) selected by a rule frozen before any measurement; ten classes, 12 paired rounds, 360 of 360 cells usable, run once. The six held-out cases were selected by a written eligibility rule and a deterministic hash before any compressor touched them, frozen with a manifest, and measured once against the unchanged package; 6 of 6 held-out cases restored exactly before the timed rounds. They are described here by workload class and size only. The gate lane compares the ZJX default with tar | zstd -1 -T4 (four threads, the matched thread budget); the reported lane compares it with tar | zstd -1 (default, single admitted thread), verified by zstd -t. The last column is ZJX archive bytes over the comparator's.

Held-out campaign, per-case medians as paired ratios (comparator over ZJX), 12 rounds
CaseStatusClassInput bytesvs default tar | zstd -1vs tar | zstd -1 -T4Size ratio
Production telemetry capture, a later day than the sealed oneheld outstructured records821,029,7631.820x faster1.281x faster1.0015
Event-stream ticksheld outevent stream90,770,0110.859x slower0.638x slower1.0012
Application logheld outapplication logs195,392,1091.402x faster0.926x slower0.9936
Agent session traceheld outagent traces84,846,0901.139x faster0.712x slower1.0014
Database snapshotheld outdatabase snapshot95,162,3680.783x slower0.686x slower1.0046
Repository working tree, 24,997 filesheld outmixed repository575,334,2501.052x faster0.666x slower1.0812
Service telemetry capture, 2026-06-03sealedstructured telemetry342,409,6091.564x faster1.086x faster1.0014
enwik8 (public)sealedbulk text100,000,0001.785x faster0.921x slower1.0006
silesia (public)sealedpublic mixed211,938,5801.972x faster1.090x faster1.0005
Synthetic deduplication casesealedsynthetic dedupNot reported0.529x slower0.535x slower1.1034
The preregistered gate (class-weighted geometric mean against tar | zstd -1 -T4, lower bound must reach 0.80) and how it reads under other class structures
ReadingPoint95% bootstrapAgainst 0.80
The six held-out cases alone (exploratory, not the rule)0.7917[0.7832, 0.8004]would not pass on the lower bound
Reported lane: default tar | zstd -1, ten classes1.1959[1.1867, 1.2043]context, not a gate

The verdict is the preregistered one, and the rules forbid changing the class structure after seeing the numbers in either direction. The PASS rests on the declared structure in which the two telemetry captures count as two classes; with them counted as one the ten-case reading is 0.7913. ZJX was slower than the four-thread comparator on 7 of 10 cases and faster on the three large-record cases. This is disclosed as engineering transparency, not as a marketing figure; no benchmark leadership is claimed.

Public release record · REDLINE source note · Release Chronicle, including what REDLINE did not achieve · The 1.29 support contract

How to read a measurement

Start with the version, dataset, settings, and comparison target. Then ask which operation was measured, whether every comparator completed, and exactly what was verified. Complete archive size includes format overhead; comparing it with raw input answers a different question from comparing it with another compressed archive, and the second question is the one that prices a migration.

  • Creation time: elapsed time to make an archive. Less time is not the same percentage as increased speed. Qualified timings come from a dedicated controlled host.
  • Memory: peak RSS is observed process memory. Configured limits and reserved memory are separate quantities.
  • Restoration: archive integrity testing, exact source comparison, and metadata comparison must be named separately.
  • Money: multiply the size advantage by eligible retained bytes and the storage rate you actually pay, then subtract compute, temporary space, migration, licensing, and restoration cost. The savings page does the first step only.

Missing measurements are Not reported, never zero. Relative improvements cannot establish absolute seconds, a total storage bill, or an independent audit.

Historical records, kept apart

These earlier results stay separate from the featured campaign because their exact ZJX version and settings are not reported in the public source note, or because they compare with raw input rather than a competitor archive. They are not current-release evidence.

Previous campaign on the same input

ZJX 1.27 CIPHERGLASS (2026-09-05, development host) wrote 4,412,968 bytes for the compact objective against the same 7,125,674-byte strongest comparator. The 1.28.0 archive is exactly 16 bytes larger: the manifest-integrity footer LOCKWIRE adds to every archive. Previous campaign source note

Pre-NIGHTMARKET size records (incomplete version attribution)

Historical size records: bytes, with incomplete version attribution
DatasetInputZJX archiveComparator archive
Real telemetry (the featured capture, earlier build)342,409,6094,412,9687,125,674
Combined real telemetry1,256,880,59021,881,73925,717,553
Generated compact JSONL1,107,297,28813,088,37156,367,866
Generated sharded NDJSON256,002,0482,451,1233,976,428
Generated workflow artifacts10,655,25227,126186,018

Exact ZJX version and compression settings are not reported for these rows; they stay historical. Historical source note, updated 2026-08-22

Raw-input example: Silesia v1, ZJX 1.21 STREAMWALL

Twelve files from a public benchmark collection, compared with the uncompressed input rather than a competitor archive. The 2026-08-30 record reports integrity testing and exact extraction under a 1 GiB host ceiling, 768 MiB ZJX memory ceiling, and 64 GiB temporary-disk ceiling. The exact compression profile is not named in the public note.

Silesia v1: complete archive bytes, ZJX 1.21 STREAMWALL
QuantityExact bytesDecimal MB
Uncompressed input211,938,580211.938580
Complete ZJX archive52,997,29952.997299

The reduction is 100 × (1 − 52,997,299 / 211,938,580) = 74.994%, rounded to 75.0%. The historical ZJX 1.2 reference failed without producing an archive, so its memory figure compares a completed run with an incomplete one. Original source note, archive digest, and conditions

Release-to-release measurements

NIGHTMARKET (Fast versus Compact on four corpora) and RELICWIRE (1.26 versus 1.25.1 creation time on two corpora) are release-to-release results, not competitor comparisons. They are summarized with their scope on the releases page. The REDLINE predecessor gate (ultrafast against released 1.28.0 fast: a creation ratio of 335x and a verified-creation ratio of 253x on the four-member cohort at the diagnostic tier, with ultrafast archives were 27% to 1,000% larger than fast's on those corpora) is a within-product comparison of two objectives with different goals and is not repeated on the homepage.

Sources

ZJX command recipes are not published; the evaluation report reproduces them for the customer. Commercial evaluation