Note: The problem described in this post was for DMD v2.054 and it no longer occurs with the more recent DMD v2.058 (see below for details or view the discussion at the D Forums).
I am currently working on a Ruby project that uses a lot of regexes on large volumes of text. It is currently running too slowly, so I decided to try to optimise it by implementing the regex matching code in the D programming language. D has given me a lot of joy (compared to C or C++) by making things like string (with Unicode) handling a breeze without taking the performance hit of supposed “productivity” languages. I painstakingly reimplemented my Ruby functions in D expecting a huge performance boost (actually I expected an order of magnitude performance jump) but instead I was shocked to see that Ruby outperformed my D code by a significant margin. The Ruby implementation was finished after 80 seconds, whereas the D program required around 280 seconds using the exact same regexes and the exact same input.