class ZTK::Profiler

Profiler Class

A comprehensive timing profiler, this class functions using method_missing to allow the consumer to define timing profiles in an ad hoc manner using a block.

@example Nested profiling

ZTK::Profiler.reset

ZTK::Profiler.operation_alpha do
  ZTK::Profiler.operation_one do
    ZTK::Profiler.operation_a do
      sleep(0.1)
    end
    ZTK::Profiler.operation_b do
      sleep(0.1)
    end
    ZTK::Profiler.operation_c do
      sleep(0.1)
    end
  end
  ZTK::Profiler.operation_two do
    ZTK::Profiler.operation_d do
      sleep(0.1)
    end
    ZTK::Profiler.operation_e do
      sleep(0.1)
    end
    ZTK::Profiler.operation_f do
      sleep(0.1)
    end
  end
end
ZTK::Profiler.operation_beta do
  ZTK::Profiler.operation_three do
    ZTK::Profiler.operation_a do
      sleep(0.1)
    end
    ZTK::Profiler.operation_b do
      sleep(0.1)
    end
    ZTK::Profiler.operation_c do
      sleep(0.1)
    end
  end
end

ZTK::Profiler.report

@example Report output

--+ OperationAlpha 0.6070s
  |--+ OperationOne 0.3035s
  |  |--+ OperationA 0.1011s
  |  |--+ OperationB 0.1011s
  |  |--+ OperationC 0.1011s
  |--+ OperationTwo 0.3035s
  |  |--+ OperationD 0.1011s
  |  |--+ OperationE 0.1011s
  |  |--+ OperationF 0.1011s
--+ OperationBeta 0.3034s
  |--+ OperationThree 0.3034s
  |  |--+ OperationA 0.1011s
  |  |--+ OperationB 0.1011s
  |  |--+ OperationC 0.1011s

 OperationAlpha: 0.6070s (22.2%)
   OperationOne: 0.3035s (11.1%)
     OperationA: 0.2022s (7.4%)
     OperationB: 0.2022s (7.4%)
     OperationC: 0.2022s (7.4%)
   OperationTwo: 0.3035s (11.1%)
     OperationD: 0.1011s (3.7%)
     OperationE: 0.1011s (3.7%)
     OperationF: 0.1011s (3.7%)
  OperationBeta: 0.3034s (11.1%)
 OperationThree: 0.3034s (11.1%)

   Nested Time: 2.7306s
   Actual Time: 0.9110s
 Profiled Time: 0.9105s
  Missing Time: 0.0005s

@author Zachary Patten <zpatten AT jovelabs DOT io>