Sha256: f199ba07926f27ed434e6236c46c61bc99dc080a388b9f2f85732233b48e3de8

Contents?: true

Size: 1.83 KB

Versions: 18

Compression:

Stored size: 1.83 KB

Contents

module ZTK
  class Profiler

    # Profiler Private Functionality
    module Private

      def report_timers(options={}, parent=nil, depth=0)
        return false if (Timer.count == 0)

        child_timers = Timer.timers_by_parent[parent]
        child_timers.each do |timer|
          prefix = ('  |' * (depth))

          options.ui.stdout.print("%s--+ %s %0.4fs\n" % [ prefix, timer.name.to_s.camelize, timer.benchmark ])

          report_timers(options, timer, (depth + 1))
        end

        true
      end

      def report_timer_totals(options={})
        return false if (Timer.count == 0)

        result                = Hash.new
        timer_names           = Timer.timers_by_name.keys.compact
        timer_names_camelize  = timer_names.map(&:to_s).map(&:camelize)
        max_timer_name_length = (timer_names_camelize.map(&:length).max + 1)
        timer_names.each do |timer_name|
          benchmark_nested   = Timer.timers_by_name[timer_name].map(&:benchmark_nested).reduce(&:+)
          result[timer_name] = benchmark_nested

          options.ui.stdout.print("%#{max_timer_name_length}s: %0.4fs (%-3.1f%%)\n" % [timer_name.to_s.camelize, benchmark_nested, (benchmark_nested / Timer.benchmark_nested_total) * 100])
        end
        result
      end

      def report_totals(options={})
        return false if (Timer.count == 0)

        times = {
          'Nested Time'   => Timer.benchmark_nested_total,
          'Actual Time'   => Profiler.total_time,
          'Profiled Time' => Timer.total_time,
          'Missing Time'  => (Profiler.total_time - Timer.total_time)
        }
        max_key_length = (times.keys.map(&:length).max + 1)
        time_format    = "%#{max_key_length}s: %0.4fs\n"

        times.each do |name, time|
          options.ui.stdout.print(time_format % [ name, time ])
        end
      end

    end

  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
ztk-3.3.2 lib/ztk/profiler/private.rb
ztk-3.3.1 lib/ztk/profiler/private.rb
ztk-3.3.0 lib/ztk/profiler/private.rb
ztk-3.2.6 lib/ztk/profiler/private.rb
ztk-3.2.5 lib/ztk/profiler/private.rb
ztk-3.2.4 lib/ztk/profiler/private.rb
ztk-3.2.3 lib/ztk/profiler/private.rb
ztk-3.2.2 lib/ztk/profiler/private.rb
ztk-3.2.1 lib/ztk/profiler/private.rb
ztk-3.2.0 lib/ztk/profiler/private.rb
ztk-3.1.0 lib/ztk/profiler/private.rb
ztk-3.0.4 lib/ztk/profiler/private.rb
ztk-3.0.3 lib/ztk/profiler/private.rb
ztk-3.0.2 lib/ztk/profiler/private.rb
ztk-3.0.1 lib/ztk/profiler/private.rb
ztk-3.0.0 lib/ztk/profiler/private.rb
ztk-2.4.2 lib/ztk/profiler/private.rb
ztk-2.4.1 lib/ztk/profiler/private.rb