I've installed cygwin to use the time benchmark function and that are the results: $ time ./Lexer.exe real 0m0.225s user 0m0.015s sys 0m0.046s I also read in the std.d.lexer thread that the use of 'char' isn't that good for a lexer, because dmd wants to decode 'char' to 'dchar'. The usage of ubyte should be better. Is that right?