Sha256: 497c5df2072a88812e741af09a880b043b86772cc0402fbbb04c91d9acd4e048
Contents?: true
Size: 1.04 KB
Versions: 2
Compression:
Stored size: 1.04 KB
Contents
require_relative 'spec_helper' require 'sinatra/base' require 'json' require 'benchmark/ips' Conditionals = lambda do |params = {}| @artists = DB[:artists] if (genre = params[:genre]) @artists = @artists.grep(:genre, "%#{genre}%", case_insensitive: true) end if (name = params[:name]) @artists = @artists.grep(:name, "%#{name}%", case_insensitive: true) end @artists.to_json end Reduction = lambda do |params = {}| @artists = Rack::Reducer.call(params, dataset: DB[:artists], filters: [ ->(genre:) { grep(:genre, "%#{genre}%", case_insensitive: true) }, ->(name:) { grep(:name, "%#{name}%", case_insensitive: true) }, ]) @artists.to_json end Benchmark.ips(3) do |bm| bm.report('conditionals, empty params') { Conditionals.call } bm.report('reduction, empty params') { Reduction.call } bm.report('conditionals, full params') do Conditionals.call({ name: 'blake', genre: 'electric' }) end bm.report('reduction, full params') do Reduction.call({ name: 'blake', genre: 'electric' }) end bm.compare! end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rack-reducer-1.0.1 | spec/benchmarks.rb |
rack-reducer-1.0.0 | spec/benchmarks.rb |