The parser is a hand-written recursive descent parser with Pratt expression
parsing for operator precedence.
| Query Type | Time | Throughput |
| simple_select | 182 ns | 99 MiB/s |
| select_where | 640 ns | 88 MiB/s |
| complex_select | 986 ns | 95 MiB/s |
| insert | 493 ns | 120 MiB/s |
| update | 545 ns | 91 MiB/s |
| node | 625 ns | 98 MiB/s |
| edge | 585 ns | 94 MiB/s |
| path | 486 ns | 75 MiB/s |
| embed | 407 ns | 138 MiB/s |
| similar | 185 ns | 118 MiB/s |
| Query Type | Time | Throughput |
| simple_select | 235 ns | 77 MiB/s |
| select_where | 1.19 us | 47 MiB/s |
| complex_select | 1.89 us | 50 MiB/s |
| insert | 688 ns | 86 MiB/s |
| update | 806 ns | 61 MiB/s |
| delete | 464 ns | 62 MiB/s |
| create_table | 856 ns | 80 MiB/s |
| node | 837 ns | 81 MiB/s |
| edge | 750 ns | 74 MiB/s |
| neighbors | 520 ns | 55 MiB/s |
| path | 380 ns | 58 MiB/s |
| embed_store | 650 ns | 86 MiB/s |
| similar | 290 ns | 76 MiB/s |
| Expression Type | Time |
| simple (a = 1) | 350 ns |
| binary_and | 580 ns |
| binary_or | 570 ns |
| nested_and_or | 950 ns |
| deep_nesting | 1.5 us |
| arithmetic | 720 ns |
| comparison_chain | 1.3 us |
| Batch Size | Time | Queries/s |
| 10 | 5.2 us | 1.9M/s |
| 100 | 52 us | 1.9M/s |
| 1,000 | 520 us | 1.9M/s |
| Query Type | Time |
| INSERT 100 rows | 45 us |
| EMBED 768-dim vector | 38 us |
| WHERE 20 conditions | 8.5 us |
- Zero dependencies: Hand-written lexer and parser with no external crates
- Consistent throughput: ~75-120 MiB/s across query types
- Expression complexity: Linear scaling with expression depth
- Batch performance: Consistent 1.9M queries/second regardless of batch size
- Large vectors: 768-dim embedding parsing in ~38us (20K dimensions/second)
| Operation | Time Complexity | Notes |
| Tokenization | O(n) | Linear scan of input |
| Parsing | O(n) | Single pass, no backtracking |
| Expression parsing | O(n * d) | n = tokens, d = nesting depth |
| Error recovery | O(1) | Immediate error on invalid syntax |
- Lexer: Character-by-character tokenization with lookahead
- Parser: Recursive descent with Pratt parsing for expressions
- AST: Zero-copy where possible, spans track source locations
- Errors: Rich error messages with span highlighting