127 lines
2.7 KiB
Ruby
127 lines
2.7 KiB
Ruby
|
$:.unshift "../lib", "../ext/sqlite3_api"
|
||
|
|
||
|
require 'sqlite3'
|
||
|
|
||
|
require 'benchmark'
|
||
|
|
||
|
N = 1000
|
||
|
|
||
|
$VERBOSE=nil
|
||
|
|
||
|
puts "database creation..."
|
||
|
Benchmark.bm( 7 ) do |x|
|
||
|
x.report('dl') do
|
||
|
N.times do
|
||
|
File.delete "test.db" rescue nil
|
||
|
SQLite3::Database.open( "test.db", :driver => "DL" ).close
|
||
|
end
|
||
|
end
|
||
|
x.report('native') do
|
||
|
N.times do
|
||
|
File.delete "test.db" rescue nil
|
||
|
SQLite3::Database.open( "test.db", :driver => "Native" ).close
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
File.delete "test.db" rescue nil
|
||
|
|
||
|
SQLite3::Database.open( "test.db" ).close
|
||
|
|
||
|
puts
|
||
|
puts "database open..."
|
||
|
Benchmark.bm( 7 ) do |x|
|
||
|
x.report('dl') do
|
||
|
N.times do
|
||
|
SQLite3::Database.open( "test.db", :driver => "DL" ).close
|
||
|
end
|
||
|
end
|
||
|
x.report('native') do
|
||
|
N.times do
|
||
|
SQLite3::Database.open( "test.db", :driver => "Native" ).close
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
File.delete "test.db" rescue nil
|
||
|
|
||
|
dl = SQLite3::Database.open( "test-dl.db", :driver => "DL" )
|
||
|
native = SQLite3::Database.open( "test-native.db", :driver => "Native" )
|
||
|
|
||
|
dl.execute "create table foo (a,b)"
|
||
|
native.execute "create table foo (a,b)"
|
||
|
|
||
|
puts
|
||
|
puts "insertions"
|
||
|
Benchmark.bm( 7 ) do |x|
|
||
|
x.report('dl') do
|
||
|
dl.transaction do
|
||
|
N.times do |i|
|
||
|
dl.execute "insert into foo values (#{i}, #{i+1})"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
x.report('native') do
|
||
|
native.transaction do
|
||
|
N.times do |i|
|
||
|
native.execute "insert into foo values (#{i}, #{i+1})"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
puts
|
||
|
puts "insertions using prepared statement"
|
||
|
Benchmark.bm( 7 ) do |x|
|
||
|
x.report('dl') do
|
||
|
dl.transaction do
|
||
|
dl.prepare "insert into foo values (?,?)" do |stmt|
|
||
|
N.times { |i| stmt.execute i, i+1 }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
x.report('native') do
|
||
|
native.transaction do
|
||
|
native.prepare( "insert into foo values (?,?)" ) do |stmt|
|
||
|
N.times { |i| stmt.execute i, i+1 }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
dl.close
|
||
|
native.close
|
||
|
File.delete "test-dl.db" rescue nil
|
||
|
File.delete "test-native.db" rescue nil
|
||
|
|
||
|
dl = SQLite3::Database.open( "test-dl.db", :driver => "DL" )
|
||
|
native = SQLite3::Database.open( "test-native.db", :driver => "Native" )
|
||
|
|
||
|
dl.execute "create table foo (a,b)"
|
||
|
dl.execute "insert into foo values (1,2)"
|
||
|
dl.execute "insert into foo values (3,4)"
|
||
|
dl.execute "insert into foo values (5,6)"
|
||
|
|
||
|
native.execute "create table foo (a,b)"
|
||
|
native.execute "insert into foo values (1,2)"
|
||
|
native.execute "insert into foo values (3,4)"
|
||
|
native.execute "insert into foo values (5,6)"
|
||
|
|
||
|
puts
|
||
|
puts "queries"
|
||
|
Benchmark.bm( 7 ) do |x|
|
||
|
x.report('dl') do
|
||
|
N.times do
|
||
|
dl.execute "select * from foo"
|
||
|
end
|
||
|
end
|
||
|
x.report('native') do
|
||
|
N.times do
|
||
|
native.execute "select * from foo"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
dl.close
|
||
|
native.close
|
||
|
File.delete "test-dl.db" rescue nil
|
||
|
File.delete "test-native.db" rescue nil
|