bench.rb
#
# Just for fun, benchmarking Pure Ruby GeoRuby against RGeo.
#
# !/usr/bin/env ruby
require 'benchmark'
require 'geo_ruby'
require 'rgeo'
COUNT = 100_000
fac = RGeo::Cartesian.factory
def t(text)
puts "\n\n#{' ' * (53 - text.size)}#{text}\n"
end
t 'Point.new!'
Benchmark.bmbm do |x|
x.report('Georuby') { COUNT.times { x = GeoRuby::SimpleFeatures::Point.from_x_y(1, 1) } }
x.report('RGeo') { COUNT.times { x = fac.point(1, 1) } }
end
t 'Point.xy!'
gpoint, rpoint = GeoRuby::SimpleFeatures::Point.from_x_y(1, 1), fac.point(1, 1)
Benchmark.bmbm do |x|
x.report('Georuby') { COUNT.times { x, y = gpoint.x, gpoint.y } }
x.report('RGeo') { COUNT.times { x, y = rpoint.x, rpoint.y } }
end
t 'Distance Haversine Formula'
Benchmark.bmbm do |x|
x.report('Georuby') { COUNT.times { x = GeoRuby::SimpleFeatures::Point.from_x_y(1, 1); x.spherical_distance(x) } }
x.report('RGeo') { COUNT.times { x = fac.point(1, 1); x.distance(x) } }
end