Skip to content

Commit cbcc882

Browse files
committed
Refactor benchmarks into a different directory
* Tag 'v0.3.0'
1 parent ac95bb0 commit cbcc882

File tree

4 files changed

+103
-89
lines changed

4 files changed

+103
-89
lines changed

bench/bench_helper.cr

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require "../src/sparsebitset"

bench/sparsebitset_bench.cr

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
require "./bench_helper"
2+
3+
include SparseBitSet
4+
5+
def bm_001()
6+
s = BitSet.new()
7+
n = 100000
8+
r = Random.new()
9+
tbeg = Time.now
10+
(1..n).each do |_|
11+
s.set(r.rand(n).to_u64)
12+
end
13+
tend = Time.now
14+
printf("\nRandom set : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
15+
end
16+
17+
def bm_002()
18+
s = BitSet.new()
19+
n = 100000
20+
r = Random.new()
21+
tbeg = Time.now
22+
(1..n).each do |_|
23+
s.test(r.rand(n).to_u64)
24+
end
25+
tend = Time.now
26+
printf("\nRandom test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
27+
end
28+
29+
def bm_003()
30+
n = 100000
31+
tbeg = Time.now
32+
(1..n).each do |_|
33+
s = BitSet.new()
34+
s.set(n.to_u64)
35+
end
36+
tend = Time.now
37+
printf("\nCreation test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
38+
end
39+
40+
def bm_004()
41+
n = 100000
42+
s = BitSet.new()
43+
(1..1000).each do |i|
44+
s.set(i.to_u64*100)
45+
end
46+
c = 0
47+
tbeg = Time.now
48+
(1..n).each do |_|
49+
c += s.length
50+
end
51+
tend = Time.now
52+
puts c
53+
printf("\nCount test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
54+
end
55+
56+
def bm_005()
57+
n = 1000
58+
s = BitSet.new()
59+
(1..3333).each do |i|
60+
s.set(i.to_u64*3)
61+
end
62+
tbeg = Time.now
63+
(1..n).each do |_|
64+
iter = s.each
65+
c = 0
66+
while iter.next != Iterator::Stop::INSTANCE
67+
c += 1
68+
end
69+
end
70+
tend = Time.now
71+
printf("\nIteration test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
72+
end
73+
74+
def bm_006()
75+
n = 500
76+
s = BitSet.new()
77+
(1..3333).each do |i|
78+
s.set(i.to_u64*30)
79+
end
80+
tbeg = Time.now
81+
(1..n).each do |_|
82+
iter = s.each
83+
c = 0
84+
while iter.next != Iterator::Stop::INSTANCE
85+
c += 1
86+
end
87+
end
88+
tend = Time.now
89+
printf("\nIteration test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
90+
end
91+
92+
def main()
93+
bm_001()
94+
bm_002()
95+
bm_003()
96+
bm_004()
97+
bm_005()
98+
bm_006()
99+
end
100+
101+
main()

spec/sparsebitset_spec.cr

Lines changed: 0 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -969,92 +969,4 @@ describe SparseBitSet do
969969
t.strict_superset?(s).should eq(true)
970970
end
971971
end
972-
973-
describe "benchmarks" do
974-
it "should set several bits" do
975-
s = BitSet.new()
976-
n = 100000
977-
r = Random.new()
978-
tbeg = Time.now
979-
(1..n).each do |_|
980-
s.set(r.rand(n).to_u64)
981-
end
982-
tend = Time.now
983-
printf("\nRandom set : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
984-
end
985-
986-
it "should test several bits" do
987-
s = BitSet.new()
988-
n = 100000
989-
r = Random.new()
990-
tbeg = Time.now
991-
(1..n).each do |_|
992-
s.test(r.rand(n).to_u64)
993-
end
994-
tend = Time.now
995-
printf("\nRandom test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
996-
end
997-
998-
it "should test creation of a bitset" do
999-
n = 100000
1000-
tbeg = Time.now
1001-
(1..n).each do |_|
1002-
s = BitSet.new()
1003-
s.set(n.to_u64)
1004-
end
1005-
tend = Time.now
1006-
printf("\nCreation test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
1007-
end
1008-
1009-
it "should set several bits, and count them" do
1010-
n = 100000
1011-
s = BitSet.new()
1012-
(1..1000).each do |i|
1013-
s.set(i.to_u64*100)
1014-
end
1015-
c = 0
1016-
tbeg = Time.now
1017-
(1..n).each do |_|
1018-
c += s.length
1019-
end
1020-
tend = Time.now
1021-
printf("\nCount test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
1022-
end
1023-
1024-
it "should set several bits, and iterate over them" do
1025-
n = 1000
1026-
s = BitSet.new()
1027-
(1..3333).each do |i|
1028-
s.set(i.to_u64*3)
1029-
end
1030-
tbeg = Time.now
1031-
(1..n).each do |_|
1032-
iter = s.each
1033-
c = 0
1034-
while iter.next != Iterator::Stop::INSTANCE
1035-
c += 1
1036-
end
1037-
end
1038-
tend = Time.now
1039-
printf("\nIteration test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
1040-
end
1041-
1042-
it "should set several bits, and iterate over them" do
1043-
n = 500
1044-
s = BitSet.new()
1045-
(1..3333).each do |i|
1046-
s.set(i.to_u64*30)
1047-
end
1048-
tbeg = Time.now
1049-
(1..n).each do |_|
1050-
iter = s.each
1051-
c = 0
1052-
while iter.next != Iterator::Stop::INSTANCE
1053-
c += 1
1054-
end
1055-
end
1056-
tend = Time.now
1057-
printf("\nIteration test : %8d ns/op\n", (tend-tbeg).ticks * 100 / n)
1058-
end
1059-
end
1060972
end

src/sparsebitset/version.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module SparseBitSet
2-
VERSION = "0.2.0"
2+
VERSION = "0.3.0"
33
end

0 commit comments

Comments
 (0)