diff --git a/.gitignore b/.gitignore index 14bf90e..1048c33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # ignore test directories spec/index_dir/* +benchmark/index_dir/* tmp # rcov generated diff --git a/benchmark/search_bench.rb b/benchmark/search_bench.rb new file mode 100644 index 0000000..638f859 --- /dev/null +++ b/benchmark/search_bench.rb @@ -0,0 +1,35 @@ +$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) +require 'rubygems' +require 'benchmark' +require 'virtus' +require 'polecat' + +class Document + include Virtus + + attribute :name, Integer + attribute :text, String +end + +begin + FileUtils.rm_r 'benchmark/index_dir' +rescue +end +Dir.mkdir 'benchmark/index_dir' +writer = Polecat::IndexWriter.new 'benchmark/index_dir' + +(1..50000).each do |i| + writer.add(Document.new(:name => i, :text => "Lorem #{i} Ipsum")) +end + +writer.write +searcher = Polecat::IndexSearcher.new :reader => writer.create_reader +query = Polecat::Query.new.add(Polecat::Term.new(:name, :lt, 25000)) + +puts Benchmark.bm { |x| + x.report('search') { + for i in 1..5000 do + searcher.search query + end + } +}