/
skiplist_volume.rb
44 lines (30 loc) · 956 Bytes
/
skiplist_volume.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$:.unshift File.dirname(__FILE__) + "/../../lib"
require 'strokedb'
include StrokeDB
require 'benchmark'
include Benchmark
@path = File.dirname(__FILE__) + "/../../spec/temp/storages/data_volume"
def benchmark!(lang)
[1000].each do |n|
bm(60) do |x|
FileUtils.rm_rf @path
skiplist = SkiplistVolume.new(:path => @path, :max_log_size => 1024*4000)
records = []
n.times {|v| records << ["key#{v}".ljust(128," "),"val#{v}".ljust(128," ")] }
offsets = []
x.report("Inserting #{n} pairs [#{lang}]") do
records.each {|rec| skiplist.insert(rec[0],rec[1]) }
end
x.report("Reading #{n} pairs [#{lang}]") do
records.each {|rec| skiplist.find(rec[0]) }
end
x.report("Dumping #{n/100} items [#{lang}]") do
(n/100).times {|i| skiplist.dump! }
end
skiplist.close!
end
end
end
benchmark!("Ruby")
Skiplist.optimize!(:C)
benchmark!("C")