Sha256: 3693de33c0becef335475861a042ddb15cf47d8a2ba663e3f38093be06a4392d

Contents?: true

Size: 1.02 KB

Versions: 20

Compression:

Stored size: 1.02 KB

Contents

#!/usr/bin/env ruby

# To test the suitability of using a range to determine a valid
# coordinate instead of the current array method as used in
# Vedeu::Terminal::Buffer#within_terminal_boundary?
#
# vedeu/benchmarks:spike/benchmarking$ ./array_vs_range.rb
# Calculating -------------------------------------
#                array   202.400k i/100ms
#                range   130.641k i/100ms
# -------------------------------------------------
#                array      8.171M (± 0.1%) i/s -     40.885M
#                range      2.471M (± 0.4%) i/s -     12.411M
#
# Comparison:
#                array:  8170584.0 i/s
#                range:  2470528.5 i/s - 3.31x slower
#

require "bundler/setup"
require "benchmark/ips"

YN   = 60
XN   = 140
GRID = Array.new(YN) { |y| Array.new(XN) { |x| :"grid_#{y}_#{x}" } }
Y    = rand(YN)
X    = rand(XN)

def fast
  GRID[Y] && GRID[Y][X]
end

def slow
  (0..YN).cover?(Y) && (0..XN).cover?(X)
end

Benchmark.ips do |x|
  x.report("array") { fast }
  x.report("range") { slow }
  x.compare!
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
vedeu-0.6.61 benchmarks/array_vs_range.rb
vedeu-0.6.60 benchmarks/array_vs_range.rb
vedeu-0.6.59 benchmarks/array_vs_range.rb
vedeu-0.6.58 benchmarks/array_vs_range.rb
vedeu-0.6.57 benchmarks/array_vs_range.rb
vedeu-0.6.56 benchmarks/array_vs_range.rb
vedeu-0.6.54 benchmarks/array_vs_range.rb
vedeu-0.6.53 benchmarks/array_vs_range.rb
vedeu-0.6.52 benchmarks/array_vs_range.rb
vedeu-0.6.51 benchmarks/array_vs_range.rb
vedeu-0.6.50 benchmarks/array_vs_range.rb
vedeu-0.6.49 benchmarks/array_vs_range.rb
vedeu-0.6.48 benchmarks/array_vs_range.rb
vedeu-0.6.47 benchmarks/array_vs_range.rb
vedeu-0.6.46 benchmarks/array_vs_range.rb
vedeu-0.6.45 benchmarks/array_vs_range.rb
vedeu-0.6.44 benchmarks/array_vs_range.rb
vedeu-0.6.43 benchmarks/array_vs_range.rb
vedeu-0.6.42 benchmarks/array_vs_range.rb
vedeu-0.6.41 benchmarks/array_vs_range.rb