✅ Benchmark Suite Complete — v5.6.5 · All 10 log types measured · Verified 2026-05-15
Test Progress
01 · API Access Logs ✓ 02 · Kubernetes / Container ✓ 03 · Application Logs ✓ 04 · Auth / Security ✓ 05 · Infrastructure / System ✓ 06 · Streaming Pipeline ✓ 07 · Operations / CI/CD ✓ 08 · Cloud Provider ✓ 09 · Network / Firewall ✓ 10 · E-Commerce / Transactions ✓
The Storage Cost Problem — Solved

Cold Storage That Queries
Like Hot Storage.

Today, engineering teams keep logs on expensive hot/warm infrastructure for weeks — not because they query them daily, but because they might need to. Cold storage was never queryable. PFC-JSONL changes that: ship logs to cheap S3 on day one, query any 1-hour window in under 6 seconds. The warm tier becomes unnecessary.

Storage Tier Typical Tools Cost / TB / month Queryable? Time-Range Query Ideal Retention
Hot Elasticsearch, Datadog, Loki, Splunk $20 – $50 ✓ Yes real-time < 1 second Last 0 – 3 days
Warm Cheaper ES tier, S3 + custom index $8 – $15 ~ Partial seconds – minutes Days 3 – 30 (often kept too long)
Cold (traditional) S3 Glacier, gzip/zstd archives $2 – $4 ✗ No full decompress needed minutes – hours Days 30+ (only for compliance)
PFC Cold
pfc-jsonl + DuckDB
S3 Standard / S3 IA $2 – $4 cold price ✓ Full SQL via DuckDB 3 – 6 seconds per 1h window / 1 GB file Day 1 onwards
Traditional: 30-day hot retention
$9,000
per month · 10 TB/month · Elasticsearch pricing
With PFC: 3 days hot + rest PFC Cold
$1,030
$900 hot (3 days) + $130 PFC S3-IA (27 days)

What this means for your team: Compress logs to PFC on day one. Store directly on S3. When an incident surfaces three weeks later, run the same DuckDB query your SREs already know — read_pfc_jsonl() — and get results in seconds. No re-hydration. No waiting. No $40/TB Elasticsearch bill for data you check twice a year.

Compatible with Fluent Bit, Vector, Kafka, OpenTelemetry, Telegraf, Grafana, and all five major time-series databases. Fits into existing pipelines without infrastructure changes.

1 API Access Logs
Sources: nginx · Caddy · AWS ALB · Cloudflare · SaaS backends  |  File: 01_api_access_logs_1gb.jsonl · 1.00 GB · ~4.5M lines
PFC-JSONL Ratio
12.76%
of original size
vs gzip-9
28% smaller
gzip-9: 17.82%
vs zstd-3
33% smaller
zstd-3: 19.02%
Compress Speed
40.1 MB/s
3.8× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 12.76%
gzip -9 17.82%
zstd -3 19.02%

Compress Speed — higher is better

zstd -3 FASTEST 113.2 MB/s
PFC-JSONL v5.6.5 40.1 MB/s
gzip -9 10.5 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 12.76%130 MB 40.1 MB/s25.5s45.7 MB/s ✅ Time-range BIDX
gzip -917.82%183 MB 10.5 MB/s99.3s151.1 MB/s ❌ Full scan only
zstd -319.02%195 MB 113.2 MB/s10.1s468.6 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2.2 GB RAM / ~380 MB per worker) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 32-block file): 5.3 s — 183,726 rows — BIDX reads 1 of 32 blocks only. gzip full scan: ~99s. zstd full scan: ~10s. PFC is the only format with block-level random access.
💡
API Access Logs: The highest-volume log type — and PFC handles it. At 12.76% ratio, a 30-day archive of 1 GB/day costs just 3.8 GB on S3 instead of 5.4 GB with zstd-3. When a customer reports a 429 or a spike in 500s from last Tuesday, DuckDB returns the relevant hour in 5.3 seconds — without downloading or decompressing the full archive. For SaaS teams running nginx, Caddy, or AWS ALB: this is the log type you produce the most of, store the longest, and query the least — until something breaks.
2 Kubernetes / Container Logs
Sources: k8s pods · Docker · containerd · kubectl logs  |  File: 02_kubernetes_container_logs_1gb.jsonl · 1.00 GB · ~5.5M lines
PFC-JSONL Ratio
7.97%
of original size
vs gzip-9
33% smaller
gzip-9: 11.85%
vs zstd-3
43% smaller
zstd-3: 13.93%
Compress Speed
53.8 MB/s
3.6× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 7.97%
gzip -9 11.85%
zstd -3 13.93%

Compress Speed — higher is better

zstd -3 FASTEST 162.9 MB/s
PFC-JSONL v5.6.5 53.8 MB/s
gzip -9 16.2 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 7.97%81 MB 53.8 MB/s19.0s49.9 MB/s ✅ Time-range BIDX
gzip -911.85%122 MB 16.2 MB/s71.8s201.1 MB/s ❌ Full scan only
zstd -313.93%143 MB 162.9 MB/s8.5s513.0 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 4.3 s — 175,837 rows — BIDX skips almost all blocks. gzip/zstd require full decompression before any query.
💡
Kubernetes Logs: 43% smaller than zstd-3 — the format Loki and Promtail use by default. Repetitive pod states (Running, Pending, Failed), service names, and namespace strings make Kubernetes logs exceptionally well-suited for PFC. At 7.97%, a 100-node cluster generating 50 GB/day stores 4 GB compressed instead of 7 GB with zstd-3. Pod crash investigations — "what was this container doing at 03:14?" — return in 4.3 seconds. Move K8s logs to S3 IA on day one and cut your observability storage bill by up to 43%.
3 Application Logs
Sources: Spring Boot · Node.js (winston/bunyan) · Python (structlog) · Java (logback)  |  File: 03_application_logs_1gb.jsonl · 1.00 GB · ~5M lines
PFC-JSONL Ratio
10.56%
of original size
vs gzip-9
28% smaller
gzip-9: 14.68%
vs zstd-3
35% smaller
zstd-3: 16.41%
Compress Speed
44.7 MB/s
3.2× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 10.56%
gzip -9 14.68%
zstd -3 16.41%

Compress Speed — higher is better

zstd -3 FASTEST 104.2 MB/s
PFC-JSONL v5.6.5 44.7 MB/s
gzip -9 14.1 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 10.56%108 MB 44.7 MB/s22.9s49.7 MB/s ✅ Time-range BIDX
gzip -914.68%151 MB 14.1 MB/s75.0s141.1 MB/s ❌ Full scan only
zstd -316.41%169 MB 104.2 MB/s10.1s552.6 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 3.9 s — 159,403 rows — BIDX filters to 1-2 of 32 blocks. No full decompression needed.
💡
Application Logs: Structured logs from your services, queryable across weeks — not hours. Spring Boot, Node.js structlog, Python logging, Go zap — all produce consistent field sets that PFC compresses to 10.56%, 35% smaller than zstd-3. A trace_id correlation across multiple services from three days ago returns in under 4 seconds, without re-hydrating anything to Elasticsearch. Teams running on 7–14 day hot retention keep logs warm purely because queries would be too slow otherwise. With PFC Cold, that window shrinks to hours.
4 Auth / Security Logs
Sources: OAuth providers · Keycloak · WAF · fail2ban · SSO gateways · API key auth  |  File: 04_auth_security_logs_1gb.jsonl · 1.00 GB · ~4.8M lines
PFC-JSONL Ratio
9.13%
of original size
vs gzip-9
31% smaller
gzip-9: 13.34%
vs zstd-3
39% smaller
zstd-3: 15.12%
Compress Speed
51.2 MB/s
3.3× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 9.13%
gzip -9 13.34%
zstd -3 15.12%

Compress Speed — higher is better

zstd -3 FASTEST 161.7 MB/s
PFC-JSONL v5.6.5 51.2 MB/s
gzip -9 14.2 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 9.13%93 MB 51.2 MB/s20.0s54.7 MB/s ✅ Time-range BIDX
gzip -913.34%137 MB 14.2 MB/s78.4s181.6 MB/s ❌ Full scan only
zstd -315.12%154 MB 161.7 MB/s10.1s558.9 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 3.3 s — 77,162 rows — BIDX filters to 1 of 32 blocks. No full decompression needed.
💡
Auth & Security Logs: Compliance keeps them for 90–365 days. Now they stay queryable the whole time. Authentication events, failed logins, privilege escalations — at 9.13% ratio, a year of security logs fits in a fraction of what gzip needs. The real win: when a security incident is discovered six weeks after it happened, DuckDB finds the offending user_id or source IP in 3.3 seconds from cold storage, without paying for hot-tier retention. Audit trail queries that used to require a multi-hour Elasticsearch restore now run on S3 IA directly.
5 Infrastructure / System Logs
Sources: systemd · syslog · cloud-init · kernel · node-exporter · auditd · cron  |  File: 05_infrastructure_system_logs_1gb.jsonl · 1.00 GB · ~5M lines
PFC-JSONL Ratio
5.31%
best result in suite 🏆
vs gzip-9
46% smaller
gzip-9: 9.82%
vs zstd-3
57% smaller
zstd-3: 12.52%
Compress Speed
61.3 MB/s
3.3× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 🏆 5.31%
gzip -9 9.82%
zstd -3 12.52%

Compress Speed — higher is better

zstd -3 FASTEST 183.2 MB/s
PFC-JSONL v5.6.5 61.3 MB/s
gzip -9 18.4 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 🏆 5.31%54 MB 61.3 MB/s16.7s62.4 MB/s ✅ Time-range BIDX
gzip -99.82%101 MB 18.4 MB/s55.6s210.6 MB/s ❌ Full scan only
zstd -312.52%129 MB 183.2 MB/s6.1s525.5 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 2.9 s — 113,385 rows — BIDX filters to 1 of 32 blocks. No full decompression needed.
💡
Infrastructure Logs: 5.31% — the most compressible log type in the benchmark. 57% smaller than zstd-3. Syslog, host metrics, daemon events, and process logs share highly repetitive fields: hostname, facility, severity, service name, numeric metrics. PFC's log-aware preprocessing identifies these recurring patterns and encodes them efficiently before BWT — the result is nearly 20× compression on raw data. For ops teams collecting system logs from hundreds of nodes: a full year of infrastructure telemetry compressed with PFC costs less than two months with zstd-3. Query time: 2.9 seconds per hour window.
6 Streaming Pipeline Logs
Sources: Kafka · Fluent Bit · Vector · Logstash · Flink · Spark Streaming  |  File: 06_streaming_pipeline_logs_1gb.jsonl · 1.00 GB · ~5M lines
PFC-JSONL Ratio
7.49%
of original size
vs gzip-9
34% smaller
gzip-9: 11.33%
vs zstd-3
44% smaller
zstd-3: 13.47%
Compress Speed
53.8 MB/s
3.1× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 7.49%
gzip -9 11.33%
zstd -3 13.47%

Compress Speed — higher is better

zstd -3 FASTEST 120.1 MB/s
PFC-JSONL v5.6.5 53.8 MB/s
gzip -9 17.3 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 7.49%76 MB 53.8 MB/s19.0s59.1 MB/s ✅ Time-range BIDX
gzip -911.33%116 MB 17.3 MB/s64.8s156.3 MB/s ❌ Full scan only
zstd -313.47%138 MB 120.1 MB/s7.0s506.9 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 3.3 s — 144,267 rows — BIDX filters to 1-2 of 32 blocks. No full decompression needed.
💡
Streaming Pipeline Logs: Kafka, Fluent Bit, Vector — high-throughput sources that compound fast. At 7.49%, 34% smaller than gzip-9 and 44% smaller than zstd-3. Streaming pipelines generate large, structured logs — consumer offsets, topic names, partition IDs, lag values — with fields that repeat across millions of events. These archives grow quickly and are rarely queried after the first 24 hours, making them ideal for immediate cold placement on S3. Consumer lag investigations, dead-letter queue analysis, and partition rebalance events are all queryable by timestamp window in 3.3 seconds.
7 Operations / CI-CD Logs
Sources: GitHub Actions · GitLab CI · Jenkins · ArgoCD · Terraform · Helm · PagerDuty  |  File: 07_operations_cicd_logs_1gb.jsonl · 1.00 GB · ~4.5M lines
PFC-JSONL Ratio
6.54%
of original size
vs gzip-9
35% smaller
gzip-9: 10.05%
vs zstd-3
47% smaller
zstd-3: 12.45%
Compress Speed
52.7 MB/s
2.9× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 6.54%
gzip -9 10.05%
zstd -3 12.45%

Compress Speed — higher is better

zstd -3 FASTEST 185.0 MB/s
PFC-JSONL v5.6.5 52.7 MB/s
gzip -9 17.9 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 6.54%66 MB 52.7 MB/s19.4s59.5 MB/s ✅ Time-range BIDX
gzip -910.05%103 MB 17.9 MB/s59.9s201.7 MB/s ❌ Full scan only
zstd -312.45%128 MB 185.0 MB/s8.3s548.9 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 2.8 s — 92,010 rows — BIDX filters to 1 of 32 blocks. No full decompression needed.
💡
Operations & CI/CD Logs: 2.8 second queries — the fastest of all 10 log types. Build logs, deployment events, feature flag changes, rollback triggers: at 6.54%, 47% smaller than zstd-3. Ops logs are dominated by state transitions — created, updated, deleted, success, failure, enabled, disabled — short strings PFC encodes with single-byte tokens. When a release from last sprint introduced a regression, query the exact deployment window by timestamp in 2.8 seconds. No log aggregation service required for historical ops data. Archive build artifacts and deploy events together in the same queryable PFC file.
8 Cloud Provider Logs
Sources: AWS CloudTrail · GCP Audit Logs · Azure Monitor · IAM events  |  File: 08_cloud_provider_logs_1gb.jsonl · 1.00 GB · ~4.5M lines
PFC-JSONL Ratio
10.43%
of original size
vs gzip-9
30% smaller
gzip-9: 14.90%
vs zstd-3
37% smaller
zstd-3: 16.61%
Compress Speed
51.7 MB/s
4.2× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 10.43%
gzip -9 14.90%
zstd -3 16.61%

Compress Speed — higher is better

zstd -3 FASTEST 147.4 MB/s
PFC-JSONL v5.6.5 51.7 MB/s
gzip -9 12.2 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 10.43%106 MB 51.7 MB/s19.8s52.2 MB/s ✅ Time-range BIDX
gzip -914.90%153 MB 12.2 MB/s87.9s164.9 MB/s ❌ Full scan only
zstd -316.61%171 MB 147.4 MB/s7.2s406.2 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 3.8 s — 85,440 rows — BIDX filters to 1-2 of 32 blocks. No full decompression needed.
💡
Cloud Provider Logs: CloudTrail, GCP Audit, Azure Monitor — compliance archives that finally answer questions. At 10.43%, 30% smaller than gzip and 37% smaller than zstd-3. Cloud audit logs are required for compliance in virtually every regulated industry — and they must be retained for 1–7 years. With traditional tools, those archives are write-only: compressed on S3, impossible to query without a full download. PFC changes that: a CloudTrail query for all API calls from a specific IAM role in a specific hour returns in 3.8 seconds, directly from S3 IA. Cut cloud audit storage costs by 37% and keep every byte queryable for the full retention period.
9 Network / Firewall Logs
Sources: HAProxy · iptables · UFW · AWS VPC Flow Logs · Cloudflare WAF · Cisco ASA  |  File: 09_network_firewall_logs_1gb.jsonl · 1.00 GB · ~5.5M lines
PFC-JSONL Ratio
6.14%
2nd best in suite 🥈
vs gzip-9
47% smaller
gzip-9: 11.54%
vs zstd-3
52% smaller
zstd-3: 12.86%
Compress Speed
55.0 MB/s
3.3× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 🥈 6.14%
gzip -9 11.54%
zstd -3 12.86%

Compress Speed — higher is better

zstd -3 FASTEST 190.7 MB/s
PFC-JSONL v5.6.5 55.0 MB/s
gzip -9 15.5 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 🥈 6.14%62 MB 55.0 MB/s18.6s53.3 MB/s ✅ Time-range BIDX
gzip -911.54%119 MB 15.5 MB/s69.1s186.5 MB/s ❌ Full scan only
zstd -312.86%132 MB 190.7 MB/s5.6s494.3 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 4.5 s — 239,740 rows — BIDX filters to 2 of 32 blocks. No full decompression needed.
💡
Network & Firewall Logs: 52% smaller than zstd-3 — second-best ratio across all log types. IP addresses, port numbers, protocol identifiers (TCP, UDP), firewall actions (ACCEPT, DROP, REJECT) and connection states recur millions of times per hour. PFC's pattern library covers these network-specific fields natively — the encoder recognises them and compresses to 6.14%. For security teams: trace a suspicious IP, find lateral movement patterns, or audit firewall policy violations across 30 days of data in 4.5 seconds per query. Network log archives are often the largest and least queried — exactly the use case PFC is built for.
10 E-Commerce / Transaction Logs
Sources: Payment gateways · Order systems · Stripe/PayPal · Fraud detection · Checkout  |  File: 10_ecommerce_transaction_logs_1gb.jsonl · 1.00 GB · ~4.5M lines
PFC-JSONL Ratio
10.18%
of original size
vs gzip-9
25% smaller
gzip-9: 13.70%
vs zstd-3
35% smaller
zstd-3: 15.78%
Compress Speed
50.1 MB/s
2.9× faster than gzip-9

Compression Ratio — lower is better

PFC-JSONL v5.6.5 BEST 10.18%
gzip -9 13.70%
zstd -3 15.78%

Compress Speed — higher is better

zstd -3 FASTEST 128.9 MB/s
PFC-JSONL v5.6.5 50.1 MB/s
gzip -9 15.0 MB/s
ToolRatioOutput Size CompressWall-ClockDecompressQuery Support
PFC-JSONL v5.6.5 best ratio 10.18%104 MB 50.1 MB/s20.4s54.7 MB/s ✅ Time-range BIDX
gzip -913.70%141 MB 15.0 MB/s71.3s172.1 MB/s ❌ Full scan only
zstd -315.78%162 MB 128.9 MB/s8.3s456.5 MB/s ❌ Full scan only

⚡ PFC runs 6 parallel workers (~2 GB RAM total) — gzip and zstd run single-threaded. Wall-clock times reflect real user wait time.

DuckDB Extension
Time-range query (1h window / 30-day dataset): 3.4 s — 73,719 rows — transaction logs queryable by time range in milliseconds. Critical for fraud investigation.
💡
E-Commerce & Transaction Logs: PCI compliance keeps them for 7 years. PFC keeps them queryable. Payment events, order state transitions, cart actions — at 10.18%, 35% smaller than zstd-3. Transaction logs have the longest mandatory retention of any log type, and they are queried almost exclusively for forensics: a dispute from four months ago, a fraud pattern across specific user IDs, a failed payment window during a promotions event. With PFC on S3 Glacier Instant Retrieval, seven years of transaction logs cost a fraction of traditional warm storage — and a timestamp query still returns in 3.4 seconds. No restore window. No re-hydration. Just SQL.
i Methodology

Test Environment

Dedicated Linux VPS · 6-Core CPU · 12 GB RAM · Ubuntu 22.04 LTS · No other workloads running during tests.

Test Data

1 GB synthetic JSONL per log type. Seeded (seed=42) for reproducibility. Representative of real production log schemas and value distributions.

PFC-JSONL Config

32 MiB blocks · 6 parallel workers · Sparse rANS O2 entropy coding · purpose-built JSONL preprocessor.

Competitors

gzip -9 (max compression, default for many log pipelines) · zstd -3 (streaming standard, used by Fluent Bit / Vector / Kafka defaults).

Timing

Wall-clock time measured per run. Each tool run once after OS page-cache warm-up. RAM via peak RSS.

Query Test

DuckDB + pfc-jsonl extension. 1-hour time window queried from a 30-day compressed dataset. Roundtrip verified byte-identical on all runs.