I came across a question on StackOverflow the other day where someone was trying to find the culprit for an unusually slow running regular expression. In fact it'd take around 30 seconds to execute. This was a rather extreme case of catastrophic backtracking. With just a few minor tweaks someone was able to drastically improve the performance, making it about 48,000 times faster. Yeah, pretty drastic and it really illustrates the importance of running a simple benchmark to test any regular expression that'll see heavy use.
It's rare that someone will write such a poor performing regular expression, especially by accident. But nevertheless, this circumstance is one where Regex Hero failed miserably. The trouble is that the regular expression was evaluated synchronously as you type. So if you're dealing with a slow running regular expression, this would actually hang the UI temporarily until it's finished. It was an ugly thing. But no more. As of today, Regex Hero now evaluates the regular expression on a separate thread, returns the results, and then highlights the matches. This asynchronous approach is much more user friendly as the UI is always responsive. In addition to this, by running the regular expression on a separate thread from the UI, Regex Hero is able to take better advantage of multi-core processors, actually improving the overall performance of the application. These are all good things. I hope you enjoy it.
Comments
Post a Comment