0.0
No commit activity in last 3 years
No release in over 3 years
Simple wrapper for Ruby's Benchmark
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

simple_bench

A simple wrapper for Ruby's Benchmarking

Description

This is just intended to be a simple wrapper to help with using Ruby's Benchmarking features while in rails c or irb.

Please have a look at the actual Ruby documentation, as it's pretty great: https://ruby-doc.org/stdlib-2.5.3/libdoc/benchmark/rdoc/Benchmark.html

This gem uses the .bmbm method

Installation

# Gemfile
gem 'simple_bench'

# Command Line
$ gem install simple_bench

Usage

Basic

My use case when creating this gem was when we were benchmarking two different solutions both using services, so that's what I'll show in this example.

# Wrap the methods so they're easy to call

def old_fetch_service
  FetchService.new.fetch
end

def new_fetch_service
  NewFetchService.new.fetch
end

SimpleBench.simple('old_fetch_service', 'new_subscriber_service')

With Variables

In this case, it's probably best to just use instance variables like in the example below

@user = user

def old_subscriber_service
  SubscriberService.new(@user).create_subscriber
end

def new_subscriber_service
  NewSubscriberService.new(@user).create_subscriber
end

SimpleBench.simple('old_subscriber_service', 'new_subscriber_service')

Multiple Methods

No problem, it's expecting as many methods as you'd like to pass to it.

def one
  100 * 100
end

def two
  200 * 200
end

def three
  300 * 300
end

SimpleBench.simple('one', 'two', 'three')
SimpleBench.simple('one', 'two')
SimpleBench.simple('two')

# All of the above will work.

Methods

.simple

Takes method names as strings, and runs each method once

# Example
def method_one
  # Call code you want to run
end

def method_two
  # Call code you want to run
end

SimpleBench.simple('method_one', 'method_two')
SimpleBench.simple('method_one', 'method_two', 'method_three', 'method_four')

.n_times

Takes method names as strings, and number of times for each to be run

# Example
def method_one
  # Call code you want to run
end

def method_two
  # Call code you want to run
end

SimpleBench.n_times('method_one', 'method_two', 150)
SimpleBench.n_times('method_one', 'method_two', 'method_three', 'method_four', 150)

.tiered

Takes method names as strings and then runs each method once, 1_000 times, 20_000, and 75_000 times respectively

# Example
def method_one
  # Call code you want to run
end

def method_two
  # Call code you want to run
end

SimpleBench.tiered('method_one', 'method_two')
SimpleBench.tiered('method_one', 'method_two', 'method_three', 'method_four')