Skip to content

Update extension to use maxminddb.zig v0.3.0#9

Merged
marselester merged 1 commit into
mainfrom
update-lib
Feb 27, 2026
Merged

Update extension to use maxminddb.zig v0.3.0#9
marselester merged 1 commit into
mainfrom
update-lib

Conversation

@marselester

@marselester marselester commented Feb 27, 2026

Copy link
Copy Markdown
Owner

Map and array decoding was improved in marselester/maxminddb.zig#12 which translated to:

  • ~31% speed when decoding full records in lookup functions
  • ~6.5x speedup on the table scan (from 15.6 to 2.4 seconds)
-- before
SELECT count(*) FROM read_mmdb('./GeoLite2-City.mmdb');
100% ▕██████████████████████████████████████▏ (00:00:15.60 elapsed)     
┌────────────────┐
│  count_star()  │
│     int64      │
├────────────────┤
│    5502351     │
│ (5.50 million) │
└────────────────┘

-- after
D select count(*) from read_mmdb('GeoLite2-City.mmdb');
100% ▕██████████████████████████████████████▏ (00:00:02.39 elapsed)     
┌────────────────┐
│  count_star()  │
│     int64      │
├────────────────┤
│    5502351     │
│ (5.50 million) │
└────────────────┘
# before
$ for i in $(seq 1 10); do
    zig build benchmark_lookup -- GeoLite2-City.mmdb 1000000 \
      2>&1 | grep 'Lookups Per Second'
  done

  echo '---'

  for i in $(seq 1 10); do
    zig build benchmark_lookup -- GeoLite2-City.mmdb 1000000 city \
      2>&1 | grep 'Lookups Per Second'
  done

Lookups Per Second: 435031
Lookups Per Second: 448831
Lookups Per Second: 424320
Lookups Per Second: 450519
Lookups Per Second: 453749
Lookups Per Second: 432921
Lookups Per Second: 456187
Lookups Per Second: 428405
Lookups Per Second: 450528
Lookups Per Second: 424362
---
Lookups Per Second: 762510
Lookups Per Second: 810526
Lookups Per Second: 796118
Lookups Per Second: 819167
Lookups Per Second: 768519
Lookups Per Second: 812188
Lookups Per Second: 807066
Lookups Per Second: 729973
Lookups Per Second: 824185
Lookups Per Second: 809390

# after
$ for i in $(seq 1 10); do
    zig build benchmark_lookup -- GeoLite2-City.mmdb 1000000 \
      2>&1 | grep 'Lookups Per Second'
  done

  echo '---'

  for i in $(seq 1 10); do
    zig build benchmark_lookup -- GeoLite2-City.mmdb 1000000 city \
      2>&1 | grep 'Lookups Per Second'
  done

Lookups Per Second: 497955
Lookups Per Second: 593995
Lookups Per Second: 590774
Lookups Per Second: 587747
Lookups Per Second: 590649
Lookups Per Second: 574647
Lookups Per Second: 586559
Lookups Per Second: 595166
Lookups Per Second: 513376
Lookups Per Second: 592375
---
Lookups Per Second: 835650
Lookups Per Second: 826393
Lookups Per Second: 791974
Lookups Per Second: 799695
Lookups Per Second: 837284
Lookups Per Second: 819740
Lookups Per Second: 816168
Lookups Per Second: 759350
Lookups Per Second: 834254
Lookups Per Second: 832943

@marselester
marselester merged commit 7656bbb into main Feb 27, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant