Comptime radix trie implemented in Zig. This library was experimental to see how feasible it is to implement a comptime radix trie where all data is known at compile time. The main use case for this library is to be used within apple_pie for routing support.
The implementation is based on Hashicorp's implementation.
For a fast, adaptive radix tree implementation in Zig I'd recommend art.zig.
comptime var radix = RadixTree(u32){};
comptime _ = radix.insert("foo", 1);
comptime _ = radix.insert("bar", 2);
const foo = radix.get("foo");
const bar = radix.getLongestPrefix("barfoo");
std.log.info("{}", .{foo}); //1
std.log.info("{}", .{bar}); //2
To run the benchmarks, run zig build bench
. Note that the benchmark is always ran as ReleaseFast.
edit build.zig if you want to enable other build modes as well.
Searches for 300 words, 50.000 times for 3 instances
StringHashMap 0177ms 0175ms 0175ms
StringArrayHashMap 0228ms 0241ms 0241ms
RadixTree 0393ms 0389ms 0392ms