Lexing being the major performance bottleneck in a compiler is a great problem to have.
replies(3):
Example: In the blog post a single token uses 32 bytes + 8 bytes for the pointer indirection in AST node. That's a lot of memory, cache line misses and indirections.