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