The question came on forrst.com about which of the following two styles of accessing the results of a regex match were preferred:
1 2 |
|
So I benchmarked it and was surprised that there was such a difference in the performance. Except on jruby, the array style access is the clear winner.
Update I went ahead and ran this through RubyProf in 1.8.7. It turns out that #[/REGEXP/] is optimized to one method call and doesn’t instantiate the MatchData object. String#match is delegated to Regexp which instantiates MatchData and then accesses the result for a total of 3 method calls. So the real savings is less object churn and method calls.