11
11
find_key_present (h:: AbstractDict , entry) = h[entry]
12
12
find_key_absent (h:: AbstractDict , entry) = getkey (h, entry, - 1 )
13
13
14
+ delete_one_key (h:: AbstractDict ) = pop! (h)
15
+
14
16
@printf (" .\n Sample #1 Key => Integer , Size => 10^6 entries\n .\n " )
15
17
16
18
sample1 = rand (Int, 10 ^ 6 , 2 )
@@ -31,18 +33,29 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
31
33
@printf (" find_key_absent for RobinDict{Any, Any}()\n " )
32
34
@btime find_key_absent (h, 1000005 )
33
35
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 " )
35
40
@btime empty! (h)
36
41
37
42
@printf (" add_entries for Dict{Any, Any}()\n " )
38
43
@btime add_entries (d, entries1)
39
44
40
45
@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)
42
52
43
53
@printf (" find_key_absent for Dict{Any, Any}()\n " )
44
54
@btime find_key_absent (d, 1000005 )
45
55
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
+
46
59
@printf (" empty! for Dict()\n " )
47
60
@btime empty! (d)
48
61
@@ -57,19 +70,24 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
57
70
@printf (" find_key_absent for RobinDict{Int, Int}()\n " )
58
71
@btime find_key_absent (h, 1000005 )
59
72
60
- @printf (" empty! for RobinDict()\n " )
73
+ @printf (" empty! for RobinDict{Int, Int} ()\n " )
61
74
@btime empty! (h)
62
75
63
76
@printf (" add_entries for Dict{Int, Int}()\n " )
64
77
@btime add_entries (d, entries1)
65
78
66
79
@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)
68
86
69
87
@printf (" find_key_absent for Dict{Int, Int}()\n " )
70
88
@btime find_key_absent (d, 1000005 )
71
89
72
- @printf (" empty! for Dict()\n " )
90
+ @printf (" empty! for Dict{Int, Int} ()\n " )
73
91
@btime empty! (d)
74
92
75
93
@printf (" .\n Sample #2 Key => Float32 , Size => 10^6 entries\n .\n " )
@@ -99,7 +117,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
99
117
@btime add_entries (d, entries2)
100
118
101
119
@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)
103
126
104
127
@printf (" find_key_absent for Dict{Any, Any}()\n " )
105
128
@btime find_key_absent (d, 1000005 )
@@ -125,7 +148,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
125
148
@btime add_entries (d, entries2)
126
149
127
150
@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)
129
157
130
158
@printf (" find_key_absent for Dict{Float32, Float32}()\n " )
131
159
@btime find_key_absent (d, 1000005 )
@@ -160,7 +188,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
160
188
@btime add_entries (d, entries3)
161
189
162
190
@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)
164
197
165
198
@printf (" find_key_absent for Dict{Any, Any}()\n " )
166
199
@btime find_key_absent (d, " abcd" )
@@ -186,7 +219,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
186
219
@btime add_entries (d, entries3)
187
220
188
221
@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)
190
228
191
229
@printf (" find_key_absent for Dict{String, String}()\n " )
192
230
@btime find_key_absent (d, " abcd" )
@@ -222,7 +260,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
222
260
@btime add_entries (d, entries1)
223
261
224
262
@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)
226
269
227
270
@printf (" find_key_absent for Dict{Any, Any}()\n " )
228
271
@btime find_key_absent (d, 1000005 )
@@ -248,7 +291,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
248
291
@btime add_entries (d, entries1)
249
292
250
293
@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)
252
300
253
301
@printf (" find_key_absent for Dict{Int, Int}()\n " )
254
302
@btime find_key_absent (d, 1000005 )
@@ -283,7 +331,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
283
331
@btime add_entries (d, entries1)
284
332
285
333
@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)
287
340
288
341
@printf (" find_key_absent for Dict{Any, Any}()\n " )
289
342
@btime find_key_absent (d, 1000005 )
@@ -309,7 +362,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
309
362
@btime add_entries (d, entries1)
310
363
311
364
@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)
313
371
314
372
@printf (" find_key_absent for Dict{Int, Int}()\n " )
315
373
@btime find_key_absent (d, 1000005 )
@@ -345,7 +403,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
345
403
@btime add_entries (d, entries2)
346
404
347
405
@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)
349
412
350
413
@printf (" find_key_absent for Dict{Any, Any}()\n " )
351
414
@btime find_key_absent (d, 1000005 )
@@ -371,7 +434,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
371
434
@btime add_entries (d, entries2)
372
435
373
436
@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)
375
443
376
444
@printf (" find_key_absent for Dict{Float32, Float32}()\n " )
377
445
@btime find_key_absent (d, 1000005 )
@@ -406,7 +474,12 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
406
474
@btime add_entries (d, entries3)
407
475
408
476
@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)
410
483
411
484
@printf (" find_key_absent for Dict{Any, Any}()\n " )
412
485
@btime find_key_absent (d, " abcd" )
@@ -432,16 +505,19 @@ hval = h.keys[h.idxfloor]; @btime find_key_present(h, hval)
432
505
@btime add_entries (d, entries3)
433
506
434
507
@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)
436
514
437
515
@printf (" find_key_absent for Dict{String, String}()\n " )
438
516
@btime find_key_absent (d, " abcd" )
439
517
440
518
@printf (" empty! for Dict()\n " )
441
519
@btime empty! (d)
442
520
443
-
444
-
445
521
# # Plots
446
522
447
523
get_load_factor (h:: AbstractDict ) = (h. count / length (h. keys))
0 commit comments