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