@@ -15,27 +15,22 @@ pub fn main() !void {
1515 var db_path : []const u8 = default_db_path ;
1616 var num_lookups = default_num_lookups ;
1717 var fields : ? []const []const u8 = null ;
18+ var index_bits : u8 = 16 ;
1819 if (args .len > 1 ) db_path = args [1 ];
1920 if (args .len > 2 ) num_lookups = try std .fmt .parseUnsigned (u64 , args [2 ], 10 );
2021 if (args .len > 3 ) {
21- var items : [max_mmdb_fields ][]const u8 = undefined ;
22-
23- var it = std .mem .splitScalar (u8 , args [3 ], ',' );
24- var i : usize = 0 ;
25- while (it .next ()) | part | : (i += 1 ) {
26- items [i ] = part ;
27- }
28-
29- fields = items [0.. i ];
22+ const f = try maxminddb .Fields (max_mmdb_fields ).parse (args [3 ], ',' );
23+ fields = f .only ();
3024 }
25+ if (args .len > 4 ) index_bits = try std .fmt .parseUnsigned (u8 , args [4 ], 10 );
3126
3227 std .debug .print ("Benchmarking with:\n " , .{});
3328 std .debug .print (" Database: {s}\n " , .{db_path });
3429 std .debug .print (" Lookups: {d}\n " , .{num_lookups });
3530 std .debug .print ("Opening database...\n " , .{});
3631
3732 var open_timer = try std .time .Timer .start ();
38- var db = try maxminddb .Reader .mmap (allocator , db_path , .{ .ipv4_index_first_n_bits = 16 });
33+ var db = try maxminddb .Reader .mmap (allocator , db_path , .{ .ipv4_index_first_n_bits = index_bits });
3934 defer db .close ();
4035 const open_time_ms = @as (f64 , @floatFromInt (open_timer .read ())) /
4136 @as (f64 , @floatFromInt (std .time .ns_per_ms ));
0 commit comments