Skip to content

Instantly share code, notes, and snippets.

@jodosha
Created March 15, 2014 13:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jodosha/9567121 to your computer and use it in GitHub Desktop.
Save jodosha/9567121 to your computer and use it in GitHub Desktop.
Rack map vs Lotus::Router performance
source 'https://rubygems.org'
ruby '2.1.1'
gem 'lotus-router' # github: 'lotus/router', branch: 'engine-rewriting'
gem 'puma'

Start the server

bundle && bundle exec puma -e production -t 16:16 rack.ru

Run the benchmark

wrk -t2 http://localhost:9292/sidekiq

#and

wrk -t2 http://localhost:9292/sidekiq/stats
require 'lotus-router'
map "/sidekiq" do
router = Lotus::Router.new do
get '/', to: ->(env) { [200, {}, ["Welcome to sidekiq"]] }
get '/stats', to: ->(env) { [200, {}, ["#{router.path(:stats)} != /sidekiq/stats"]] }, as: :stats
end
run router
end
| /sidekiq | /sidekiq/stats |
Rack | 6705 | 6028 |
Router 0.1.0 | 7057 | 6249 |
Router rewrite | 7099 | 6321 |
* Router rewriting is in progress and there is still room for improvements.
require 'lotus-router'
router = Lotus::Router.new do
namespace '/sidekiq' do
get '/', to: ->(env) { [200, {}, ["Welcome to sidekiq"]] }
get '/stats', to: ->(env) { [200, {}, ["#{router.path(:stats)} != /sidekiq/stats"]] }, as: :stats
end
end
run router
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment