I had a 3 minute look at the code in the github repo.
The parser uses ~= (D's array concatenation operator) a lot. This always copies and will lead to quadratic performance for parsing e.g. blocks of statements. Similarly, the switch parser uses code like this:
>This always copies and will lead to quadratic performance
In D, "a ~ b" always copies but "a ~= b" might not. Also, appending using ~= will grow the array exponentially, so the amoritized performance will be better than quadratic.
Doing "x.length += 1", however, does incremental growth and will have poor performance.
The parser uses ~= (D's array concatenation operator) a lot. This always copies and will lead to quadratic performance for parsing e.g. blocks of statements. Similarly, the switch parser uses code like this:
This is similarly quadratic - it incrementally grows the statement array.Look at algorithm performance first.