module SimpleProfiler
Constants
- VERSION
Public Class Methods
profile_class_methods(klass, *methods)
click to toggle source
# File lib/simple_profiler.rb, line 32 def profile_class_methods(klass, *methods) methods.each do |method| new_method = "__#{method}_profiled__" klass.singleton_class.send :alias_method, new_method, method klass.send(:define_singleton_method, method) do |*args, &block| SimpleProfiler.track klass, :class, method, args do send new_method, *args, &block end end end end
profile_instance_methods(klass, *methods)
click to toggle source
# File lib/simple_profiler.rb, line 20 def profile_instance_methods(klass, *methods) methods.each do |method| new_method = "__#{method}_profiled__" klass.send :alias_method, new_method, method klass.send(:define_method, method) do |*args, &block| SimpleProfiler.track klass, :instance, method, args do send new_method, *args, &block end end end end
track(klass, target, method, args) { || ... }
click to toggle source
# File lib/simple_profiler.rb, line 44 def track(klass, target, method, args) started_at = Time.now memory = process_memory result = yield tracked_args = track_method_args ? args : [] notify Event.new(klass, target, method, tracked_args, started_at, Time.now, memory, process_memory) result end
Private Class Methods
notify(event)
click to toggle source
# File lib/simple_profiler.rb, line 57 def notify(event) reporters.each do |report| report.notify event end end
process()
click to toggle source
# File lib/simple_profiler.rb, line 63 def process @process ||= Datacenter::Process.new Process.pid end
process_memory()
click to toggle source
# File lib/simple_profiler.rb, line 67 def process_memory enabled_log_memory ? process.memory : 0 end