From 7b64d3ef3496d14bc8040d00e63cf2bef6133ecd Mon Sep 17 00:00:00 2001 From: evanweaver Date: Mon, 22 Oct 2007 06:09:56 +0000 Subject: ruby uriclassifier in place. 3x slower on MRI vs TST; 1.5x slower on JRuby vs same. surprisingly, for any realistic number of URIs the slowdown is basically linear git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@726 19e92222-5c0b-0410-8929-a290d50e31e9 --- test/test_uriclassifier.rb | 67 +++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 25 deletions(-) (limited to 'test') diff --git a/test/test_uriclassifier.rb b/test/test_uriclassifier.rb index 973309a..d2099f8 100644 --- a/test/test_uriclassifier.rb +++ b/test/test_uriclassifier.rb @@ -185,37 +185,54 @@ class URIClassifierTest < Test::Unit::TestCase end end - def test_benchmark - @fragments = %w(the benchmark module provides methods to measure and report the time used to execute ruby code) - - @classifier = URIClassifier.new - @classifier.register("/", 1) - - @requests = [] + def xtest_benchmark + # This benchmark should favor a TST, but it seems to be mostly irrelevant + + @uris = %w( + / + /dag /dig /digbark /dog /dogbark /dog/bark /dug /dugbarking /puppy + /c /cat /cat/tree /cat/tree/mulberry /cats /cot /cot/tree/mulberry /kitty /kittycat + ) - @fragments.size.times do |n| - this_uri = "/" + @fragments[0..n].join("/") - @classifier.register(this_uri, 1) - @requests << this_uri + @requests = %w( + / + /dig + /digging + /dogging + /dogbarking/ + /puppy/barking + /c + /cat + /cat/shrub + /cat/tree + /cat/tree/maple + /cat/tree/mulberry/tree + /cat/tree/oak + /cats/ + /cats/tree + /cod + /zebra + ) + + @classifier = URIClassifier.new + @uris.each do |uri| + @classifier.register(uri, 1) end - - @requests = @requests.map do |path| - (0..100).map do |n| - path.size > n ? path[0..-n] : path - end - end.flatten * 10 - - puts "#{@fragments.size} paths registered" - puts "#{@requests.size} requests queued" - + Benchmark.bm do |x| x.report do - @requests.each do |request| - @classifier.resolve(request) - end +# require 'ruby-prof' +# profile = RubyProf.profile do + 10000.times do + @requests.each do |request| + @classifier.resolve(request) + end + end +# end +# File.open("profile.html", 'w') { |file| RubyProf::GraphHtmlPrinter.new(profile).print(file, 0) } end end - + end end -- cgit v1.2.3-24-ge0c7