Ticket #10835: 0001-time-test-for-a-large-restful-routeset-recognition.patch
| File 0001-time-test-for-a-large-restful-routeset-recognition.patch, 3.7 kB (added by oleganza, 6 months ago) |
|---|
-
a/actionpack/test/controller/fake_controllers.rb
old new 10 10 class NewsFeedController < Class.new(ActionController::Base); end 11 11 end 12 12 13 # For speed test 14 class SpeedController < ActionController::Base; end 15 class SearchController < SpeedController; end 16 class VideosController < SpeedController; end 17 class VideoFileController < SpeedController; end 18 class VideoSharesController < SpeedController; end 19 class VideoAbusesController < SpeedController; end 20 class VideoUploadsController < SpeedController; end 21 class VideoVisitsController < SpeedController; end 22 class UsersController < SpeedController; end 23 class SettingsController < SpeedController; end 24 class ChannelsController < SpeedController; end 25 class ChannelVideosController < SpeedController; end 26 class SessionsController < SpeedController; end 27 class LostPasswordsController < SpeedController; end 28 class PagesController < SpeedController; end 29 13 30 ActionController::Routing::Routes.draw do |map| 14 31 map.route_one 'route_one', :controller => 'elsewhere', :action => 'flash_me' 15 32 map.connect ':controller/:action/:id' -
a/actionpack/test/controller/routing_test.rb
old new 84 84 end 85 85 86 86 def test_time_recognition 87 n = 10000 87 # We create many routes to make situation more realistic 88 @rs = ::ActionController::Routing::RouteSet.new 89 @rs.draw { |map| 90 map.frontpage '', :controller => 'search', :action => 'new' 91 map.resources :videos do |video| 92 video.resources :comments 93 video.resource :file, :controller => 'video_file' 94 video.resource :share, :controller => 'video_shares' 95 video.resource :abuse, :controller => 'video_abuses' 96 end 97 map.resources :abuses, :controller => 'video_abuses' 98 map.resources :video_uploads 99 map.resources :video_visits 100 101 map.resources :users do |user| 102 user.resource :settings 103 user.resources :videos 104 end 105 map.resources :channels do |channel| 106 channel.resources :videos, :controller => 'channel_videos' 107 end 108 map.resource :session 109 map.resource :lost_password 110 map.search 'search', :controller => 'search' 111 map.resources :pages 112 map.connect ':controller/:action/:id' 113 } 114 n = 1000 88 115 if RunTimeTests 89 116 GC.start 90 117 rectime = Benchmark.realtime do 91 118 n.times do 92 rs.recognize_path(" content")93 rs.recognize_path(" content/list")94 rs.recognize_path(" content/show/10")95 rs.recognize_path(" admin/user")96 rs.recognize_path(" admin/user/list")97 rs.recognize_path(" admin/user/show/10")119 rs.recognize_path("/videos/1234567", {:method => :get}) 120 rs.recognize_path("/videos/1234567/abuse", {:method => :get}) 121 rs.recognize_path("/users/1234567/settings", {:method => :get}) 122 rs.recognize_path("/channels/1234567", {:method => :get}) 123 rs.recognize_path("/session/new", {:method => :get}) 124 rs.recognize_path("/admin/user/show/10", {:method => :get}) 98 125 end 99 126 end 100 puts "\n\nRecognition ( RouteSet):"127 puts "\n\nRecognition (#{rs.routes.size} routes):" 101 128 per_url = rectime / (n * 6) 102 129 puts "#{per_url * 1000} ms/url" 103 130 puts "#{1 / per_url} url/s\n\n"