module BenchmarkMethods::ClassMethods
Public Instance Methods
benchmark(*cmethods)
click to toggle source
Calls superclass method
# File lib/benchmark_methods.rb, line 63 def benchmark(*cmethods) interceptor = const_get("#{name.demodulize_for_bm}Interceptor") klass = const_get(name) cmethods.each do |method_name| interceptor.module_eval do define_method(method_name) do |*args, &block| BenchmarkMethods::measure("#{klass} #{method_name}") do super(*args, &block) end end end end end
cbenchmark(*cmethods)
click to toggle source
Calls superclass method
# File lib/benchmark_methods.rb, line 43 def cbenchmark(*cmethods) interceptor = const_get("#{name.demodulize_for_bm}Interceptor") klass = const_get(name) helper = const_set("BenchmarkMethods#{SecureRandom.hex}Helper", Module.new) cmethods.each do |method_name| interceptor.module_eval do helper.send :define_singleton_method, :prepended do |base| define_method(method_name) do |*args, &block| BenchmarkMethods::measure("#{klass}.#{method_name}") do super(*args, &block) end end end (class << klass; self; end).module_eval do prepend(helper) end end end end