Oooh I've just realized something, the *compilation* calls are what's destroying the performance. I was using "dmd test.d && test.exe" instead of just "test.exe" and this would generate a new exe which screwed up the results.
So regex has nothing to do with it. Still, some linkers perform better: $ dmd -c test.obj $ link test.obj Average is ~700usecs. But with ulink: $ ulink test.obj Average is ~380 usecs. Interesting!