Sha256: 387de5d5c8c5b784db4778b291fecd36566b9d0e6bd5ddc0a11a3588e90bb72a

Contents?: true

Size: 1.85 KB

Versions: 11

Compression:

Stored size: 1.85 KB

Contents

#!/usr/bin/env ruby

#
# Ref: https://github.com/evanphx/benchmark-ips
#

require 'bundler/setup'
require 'skn_utils'
require 'ostruct'
require 'benchmark/ips'

class GCSuite
  def warming(*)
    run_gc
  end

  def running(*)
    run_gc
  end

  def warmup_stats(*)
  end

  def add_report(*)
  end

  private

  def run_gc
    GC.enable
    GC.start
    GC.disable
  end
end

suite = GCSuite.new

# Warming up --------------------------------------
# LinkedList Ops     2.297k i/100ms
#      Array Ops    34.468k i/100ms
# Calculating -------------------------------------
# LinkedList Ops     17.015k (±35.2%) i/s -     71.207k in   5.100193s
#      Array Ops    377.943k (± 7.3%) i/s -      1.896M in   5.048217s
#
# Comparison:
#       Array Ops:   377942.7 i/s
# LinkedList Ops:    17015.4 i/s - 22.21x  slower


Benchmark.ips do |x|
  x.config(:suite => suite)

  adders = [50, 10, 110, 6, 30, 101, 12, 33, 4]
  vargs  = [70, 71, 72, 73, 74, 75, 76, 77, 78, 79]
  cproc  = lambda {|a| a}

  x.report('Array Ops') do
    ary = Array.new(vargs)
    # adders.each {|x| ary.push(x) }
    adders.each {|x| ary.insert(5, x) }
    value = ary.sort!
    ary.first
    ary.clear
  end

  x.report('Single Ops') do
    ll = SknUtils::Lists::LinkedList.new(*vargs, &cproc)
    # adders.each {|x| ll.insert(x) }
    adders.each {|x| ll.insert_after(74, x) }
    value = ll.sort!
    ll.first
    ll.clear
  end

  x.report('Double Ops') do
    dll = SknUtils::Lists::DoublyLinkedList.new(*vargs, &cproc)
    # adders.each {|x| dll.insert(x) }
    adders.each {|x| dll.insert_after(74, x) }
    value = dll.sort!
    dll.first
    dll.clear
  end

  x.report('Circulat Ops') do
    cl = SknUtils::Lists::CircularLinkedList.new(*vargs, &cproc)
    # adders.each {|x| cl.insert(x) }
    adders.each {|x| cl.insert_after(74, x) }
    value = cl.sort!
    cl.first
    cl.clear
  end

  x.compare!
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
skn_utils-4.0.0 bin/bench_linklists.rb
skn_utils-3.6.0 bin/bench_linklists.rb
skn_utils-3.5.2 bin/bench_linklists.rb
skn_utils-3.5.0 bin/bench_linklists.rb
skn_utils-3.4.2 bin/bench_linklists.rb
skn_utils-3.4.1 bin/bench_linklists.rb
skn_utils-3.4.0 bin/bench_linklists.rb
skn_utils-3.3.12 bin/bench_linklists.rb
skn_utils-3.3.11 bin/bench_linklists.rb
skn_utils-3.3.10 bin/bench_linklists.rb
skn_utils-3.3.9 bin/bench_linklists.rb