module PerfStats

Public Instance Methods

measure(task, object = nil) { || ... } click to toggle source
# File lib/unicorn-cuba-base/perf_stats.rb, line 7
def measure(task, object = nil)
        if log.perf?
                begin
                        $perf_stats_nest_level += 1
                        $perf_stats_tasks << task
                        task = $perf_stats_tasks.join(' -> ')
                        ret = nil
                        took = Benchmark.measure do
                                ret = yield
                        end
                        log.with_meta(
                                type: 'perf-stats',
                                user_time: took.utime.round(6),
                                system_time:took.stime.round(6),
                                total_time: took.total.round(6),
                                real_time: took.real.round(6),
                                task: task,
                                object: object,
                                level: $perf_stats_nest_level
                        ).perf "took #{"%0.6f" % took.real} sec - #{task}#{object ? ": #{object}" : ''}"
                        ret
                ensure
                        $perf_stats_nest_level -= 1
                        $perf_stats_tasks.pop
                end
        else
                yield
        end
end