Using `extend` at runtime on individual objects blows away method caches and significantly impacts performance:

http://jamesgolick.com/2013/4/14/mris-method-caches.html
https://charlie.bz/blog/things-that-clear-rubys-method-cache

In general, I'd like to get away from using constructs that blow away MRI's method cache in RSpec, in the hope we can significantly improve performance.  (Obviously, rspec-mocks will _always_ have to do things that blow away the method cache, as the very things that do that--redefining methods and such--are the very purpose of rspec-mocks...but I'm hopeful that by avoiding these constructs in rspec-core and rspec-expectations, perf on examples that don't use rspec-mocks can be significantly improved).

I posted a follow up comment with an alternate suggestion that avoids the cost of the Proc reification, and avoids the `extend` cost: