#!/usr/bin/ruby

require 'optparse'

def main
  @gc = false
  @ar = false
  opts = OptionParser.new
  opts.banner = "Usage: #{File.basename($0, '.*')} [--gc] [--ar] runs"
  opts.on('--gc', 'Enable GC.') {
    @gc = true
  }
  opts.on('--ar', 'Load active_record library.') {
    @ar = true
  }
  opts.on('--help', 'Prints this message and quit.') {
    puts opts.help
    exit 0
  }
  begin
    opts.parse!(ARGV)
  rescue OptionParser::ParseError => err
    $stderr.puts err.message
    exit 1
  end
  unless ARGV.size == 1
    $stderr.puts 'wrong number of arguments'
    $stderr.puts opts.help
    exit 1
  end
  @runs = ARGV[0].to_i
end

main

@gc ? GC.enable : GC.disable

require 'benchmark'
require 'sqlite3'

if @ar
  $:.unshift(File.dirname(__FILE__) + '/../lib')
  require 'active_record'
end

$VERBOSE = nil

File.delete "test3.db" rescue nil
db3 = SQLite3::Database.open( "test3.db" )
db3.execute "create table foo (a,b)"
db3.execute "insert into foo values (1,2)"
db3.execute "insert into foo values (3,4)"
db3.execute "insert into foo values (5,6)"

runtime = Benchmark.measure do |x|
  @runs.times do
    db3.execute "select * from foo"
  end
end

db3.close

puts [RUBY_VERSION, @gc ? 1 : 0, @ar ? 1 : 0, @runs, runtime.real].join("\t")
