rspec/rspec-expectations — pull request #340 by myronmarston (2013-10-15 01:48:22+00:00)
Title: Add benchmarks for the new implementation of the custom matcher DSL.

Results are includde for:

- MRI 2.0.0, MRI 1.9.3, JRuby 1.7.4
- Against 2.14.3, 3.0.0.pre before matcher DSL rewrite, 3.0.0.pre after matcher DSL rewrite

Conclusions:

* Getting an instance of a custom matcher was insanely slow in 2.x,
and it looks like the `making_declared_methods_public` hack for 1.8.6
was the primary source of that. Without that, getting an instance of
a matcher is ~20x faster. To see what changed between 2.14.3 and
the commit used for this benchmark, go to:
https://github.com/rspec/rspec-expectations/compare/v2.14.3...4c47e4c43ee6961c755d325e73181b1f5b6bf097#diff-a51020971ade2c87f1d5b93f20d711c7L6
* With our new custom matcher DSL, using a matcher is approximately
the same perf. However, defining a matcher is about 10x slower
(since it defines a subclass) while getting an instance of
an already defined matcher is about 10x faster.

Overall, I think this is a net win, because users almost certainly
use existing matchers more often then they define them. (The exception
would be if they define custom matchers they don't use, but that
would be very odd).

Closes #338.

@dchelimsky -- thoughts?