Skip to content

Commit c139ca6

Browse files
committed
add benchmark for delete!, correct error in find_key_present in Dict
1 parent 476af9f commit c139ca6

File tree

1 file changed

+95
-19
lines changed

1 file changed

+95
-19
lines changed

test/bench_robin_dict.jl

Lines changed: 95 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ end
1111
find_key_present(h::AbstractDict, entry) = h[entry]
1212
find_key_absent(h::AbstractDict, entry) = getkey(h, entry, -1)
1313

14+
delete_one_key(h::AbstractDict) = pop!(h)
15+
1416
@printf(".\nSample #1 Key => Integer , Size => 10^6 entries\n.\n")
1517

1618
sample1 = rand(Int, 10^6, 2)
@@ -31,18 +33,29 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
3133
@printf(" find_key_absent for RobinDict{Any, Any}()\n")
3234
@btime find_key_absent(h, 1000005)
3335

34-
@printf(" empty! for RobinDict()\n")
36+
@printf(" delete_one_key for RobinDict{Any, Any}()\n")
37+
@btime delete_one_key(x) setup = (x = copy(h)) samples = 100 evals = 10;
38+
39+
@printf(" empty! for RobinDict{Any, Any}()\n")
3540
@btime empty!(h)
3641

3742
@printf(" add_entries for Dict{Any, Any}()\n")
3843
@btime add_entries(d, entries1)
3944

4045
@printf(" find_key_present for Dict{Any, Any}()\n")
41-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
46+
i = d.idxfloor
47+
while d.slots[Main.i] != 0x1
48+
Main.i += 1
49+
end
50+
dval = d.keys[i];
51+
@btime find_key_present(d, dval)
4252

4353
@printf(" find_key_absent for Dict{Any, Any}()\n")
4454
@btime find_key_absent(d, 1000005)
4555

56+
@printf(" delete_one_key for Dict{Any, Any}()\n")
57+
@btime delete_one_key(x) setup = (x = copy(d)) samples = 100 evals = 10;
58+
4659
@printf(" empty! for Dict()\n")
4760
@btime empty!(d)
4861

@@ -57,19 +70,24 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
5770
@printf(" find_key_absent for RobinDict{Int, Int}()\n")
5871
@btime find_key_absent(h, 1000005)
5972

60-
@printf(" empty! for RobinDict()\n")
73+
@printf(" empty! for RobinDict{Int, Int}()\n")
6174
@btime empty!(h)
6275

6376
@printf(" add_entries for Dict{Int, Int}()\n")
6477
@btime add_entries(d, entries1)
6578

6679
@printf(" find_key_present for Dict{Int, Int}()\n")
67-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
80+
i = d.idxfloor
81+
while d.slots[Main.i] != 0x1
82+
Main.i += 1
83+
end
84+
dval = d.keys[i];
85+
@btime find_key_present(d, dval)
6886

6987
@printf(" find_key_absent for Dict{Int, Int}()\n")
7088
@btime find_key_absent(d, 1000005)
7189

72-
@printf(" empty! for Dict()\n")
90+
@printf(" empty! for Dict{Int, Int}()\n")
7391
@btime empty!(d)
7492

7593
@printf(".\nSample #2 Key => Float32 , Size => 10^6 entries\n.\n")
@@ -99,7 +117,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
99117
@btime add_entries(d, entries2)
100118

101119
@printf(" find_key_present for Dict{Any, Any}()\n")
102-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
120+
i = d.idxfloor
121+
while d.slots[Main.i] != 0x1
122+
Main.i += 1
123+
end
124+
dval = d.keys[i];
125+
@btime find_key_present(d, dval)
103126

104127
@printf(" find_key_absent for Dict{Any, Any}()\n")
105128
@btime find_key_absent(d, 1000005)
@@ -125,7 +148,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
125148
@btime add_entries(d, entries2)
126149

127150
@printf(" find_key_present for Dict{Float32, Float32}()\n")
128-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
151+
i = d.idxfloor
152+
while d.slots[Main.i] != 0x1
153+
Main.i += 1
154+
end
155+
dval = d.keys[i];
156+
@btime find_key_present(d, dval)
129157

130158
@printf(" find_key_absent for Dict{Float32, Float32}()\n")
131159
@btime find_key_absent(d, 1000005)
@@ -160,7 +188,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
160188
@btime add_entries(d, entries3)
161189

162190
@printf(" find_key_present for Dict{Any, Any}()\n")
163-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
191+
i = d.idxfloor
192+
while d.slots[Main.i] != 0x1
193+
Main.i += 1
194+
end
195+
dval = d.keys[i];
196+
@btime find_key_present(d, dval)
164197

165198
@printf(" find_key_absent for Dict{Any, Any}()\n")
166199
@btime find_key_absent(d, "abcd")
@@ -186,7 +219,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
186219
@btime add_entries(d, entries3)
187220

188221
@printf(" find_key_present for Dict{String, String}()\n")
189-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
222+
i = d.idxfloor
223+
while d.slots[Main.i] != 0x1
224+
Main.i += 1
225+
end
226+
dval = d.keys[i];
227+
@btime find_key_present(d, dval)
190228

191229
@printf(" find_key_absent for Dict{String, String}()\n")
192230
@btime find_key_absent(d, "abcd")
@@ -222,7 +260,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
222260
@btime add_entries(d, entries1)
223261

224262
@printf(" find_key_present for Dict{Any, Any}()\n")
225-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
263+
i = d.idxfloor
264+
while d.slots[Main.i] != 0x1
265+
Main.i += 1
266+
end
267+
dval = d.keys[i];
268+
@btime find_key_present(d, dval)
226269

227270
@printf(" find_key_absent for Dict{Any, Any}()\n")
228271
@btime find_key_absent(d, 1000005)
@@ -248,7 +291,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
248291
@btime add_entries(d, entries1)
249292

250293
@printf(" find_key_present for Dict{Int, Int}()\n")
251-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
294+
i = d.idxfloor
295+
while d.slots[Main.i] != 0x1
296+
Main.i += 1
297+
end
298+
dval = d.keys[i];
299+
@btime find_key_present(d, dval)
252300

253301
@printf(" find_key_absent for Dict{Int, Int}()\n")
254302
@btime find_key_absent(d, 1000005)
@@ -283,7 +331,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
283331
@btime add_entries(d, entries1)
284332

285333
@printf(" find_key_present for Dict{Any, Any}()\n")
286-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
334+
i = d.idxfloor
335+
while d.slots[Main.i] != 0x1
336+
Main.i += 1
337+
end
338+
dval = d.keys[i];
339+
@btime find_key_present(d, dval)
287340

288341
@printf(" find_key_absent for Dict{Any, Any}()\n")
289342
@btime find_key_absent(d, 1000005)
@@ -309,7 +362,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
309362
@btime add_entries(d, entries1)
310363

311364
@printf(" find_key_present for Dict{Int, Int}()\n")
312-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
365+
i = d.idxfloor
366+
while d.slots[Main.i] != 0x1
367+
Main.i += 1
368+
end
369+
dval = d.keys[i];
370+
@btime find_key_present(d, dval)
313371

314372
@printf(" find_key_absent for Dict{Int, Int}()\n")
315373
@btime find_key_absent(d, 1000005)
@@ -345,7 +403,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
345403
@btime add_entries(d, entries2)
346404

347405
@printf(" find_key_present for Dict{Any, Any}()\n")
348-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
406+
i = d.idxfloor
407+
while d.slots[Main.i] != 0x1
408+
Main.i += 1
409+
end
410+
dval = d.keys[i];
411+
@btime find_key_present(d, dval)
349412

350413
@printf(" find_key_absent for Dict{Any, Any}()\n")
351414
@btime find_key_absent(d, 1000005)
@@ -371,7 +434,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
371434
@btime add_entries(d, entries2)
372435

373436
@printf(" find_key_present for Dict{Float32, Float32}()\n")
374-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
437+
i = d.idxfloor
438+
while d.slots[Main.i] != 0x1
439+
Main.i += 1
440+
end
441+
dval = d.keys[i];
442+
@btime find_key_present(d, dval)
375443

376444
@printf(" find_key_absent for Dict{Float32, Float32}()\n")
377445
@btime find_key_absent(d, 1000005)
@@ -406,7 +474,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
406474
@btime add_entries(d, entries3)
407475

408476
@printf(" find_key_present for Dict{Any, Any}()\n")
409-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
477+
i = d.idxfloor
478+
while d.slots[Main.i] != 0x1
479+
Main.i += 1
480+
end
481+
dval = d.keys[i];
482+
@btime find_key_present(d, dval)
410483

411484
@printf(" find_key_absent for Dict{Any, Any}()\n")
412485
@btime find_key_absent(d, "abcd")
@@ -432,16 +505,19 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
432505
@btime add_entries(d, entries3)
433506

434507
@printf(" find_key_present for Dict{String, String}()\n")
435-
dval = d.keys[d.idxfloor]; @btime find_key_present(d, dval)
508+
i = d.idxfloor
509+
while d.slots[Main.i] != 0x1
510+
Main.i += 1
511+
end
512+
dval = d.keys[i];
513+
@btime find_key_present(d, dval)
436514

437515
@printf(" find_key_absent for Dict{String, String}()\n")
438516
@btime find_key_absent(d, "abcd")
439517

440518
@printf(" empty! for Dict()\n")
441519
@btime empty!(d)
442520

443-
444-
445521
## Plots
446522

447523
get_load_factor(h::AbstractDict) = (h.count / length(h.keys))

0 commit comments

Comments
 (0)