simplest_benchmark

Benchmark your code fastest, simplest and get pragmatic results.

  • Perfectly formated for get into an spreadsheet and analyze it.
  • Inegrated with Rails logger
  • Not Rails ? don't worry, it creates a cutom simplest_benchmark.log log file
  • only two methods: sb_begin, and sb_end

It's so simple:

Installation

gem install simplest_benchmark

or in your Gemfile:

gem 'simplest_benchmark'

Usage

Simple use
require 'simplest_benchmark'

class MySlowClass
  include SimplestBenchmark

  def slow_method
    var = get_some_value
    sb_begin('heavy work')
      some_hard_work
    sb_end('heavy work')
  end
end
Nested use
require 'simplest_benchmark'

class MySlowClass
  include SimplestBenchmark

  def slow_method
    var = get_some_value
    sb_begin('heavy work')
      some_hard_work
    sb_end('heavy_work')
  end

  def some_hard_work
    sb_begin('heavy work 1')
      hard_work_part1
    sb_end('heavy work 1')

    sb_begin('heavy work 2')
      hard_work_part2
    sb_end('heavy work 2')
  end
end

Results

Results go to Rails log file, or to simplest_benchmark.log file. You can simply do

cat log/development.log | grep DEBUG

and obtain something like:

DEBUG   2015-11-19 17:13:24 -0300       1447964004.003463       BEGIN   0       heavy work
DEBUG   2015-11-19 17:13:24 -0300       1447964004.003463       BEGIN   1       heavy work 1
DEBUG   2015-11-19 17:13:33 -0300       1447964013.4338706      END     1       heavy work 1  11.3775455951690674
DEBUG   2015-11-19 17:13:33 -0300       1447964004.003463       BEGIN   1       heavy work 2
DEBUG   2015-11-19 17:13:38 -0300       1447964013.4338706      END     1       heavy work 2  5.38402085203944020
DEBUG   2015-11-19 17:13:38 -0300       1448652456.6792688      END     0       heavy work    17.622838973999023
  • field1: DEBUG text
  • field2: timestamp of event
  • field3: timestamp in float format
  • field4: BEGIN or END event
  • field5: level of deepness: For nested usage, each nested sb_begin gonna +1 this number
  • field6: label identifier
  • field7: amount of seconds transcurred between last sb_begin and current sb_end call.

it is all. Enjoy.