Sha256: 87859e79bea6e47250edc6ae14e9131d1bdf8f7ae740cfe653790f7518b2e5db
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
require 'datacenter' require 'class_config' require_relative 'simple_profiler/version' require_relative 'simple_profiler/event' require_relative 'simple_profiler/reporters/logger' require_relative 'simple_profiler/reporters/summary' Datacenter.logger.level = Logger::ERROR module SimpleProfiler extend ClassConfig attr_config :reporters, [SimpleProfiler::Reporters::Logger.new(Logger.new(STDOUT))] attr_config :enabled_log_memory, true class << self 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 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 def track(klass, target, method, args) started_at = Time.now memory = process_memory result = yield notify Event.new(klass, target, method, args, started_at, Time.now, memory, process_memory) result end private def notify(event) reporters.each do |report| report.notify event end end def process @process ||= Datacenter::Process.new Process.pid end def process_memory enabled_log_memory ? process.memory : 0 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simple_profiler-0.1.1 | lib/simple_profiler.rb |