-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsearch_int_byte.php
83 lines (77 loc) · 3.47 KB
/
search_int_byte.php
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
function bench_lmv(int $n, int $iterations) {
$t1=microtime(true);
$x = new Teds\LowMemoryVector(array_fill(0, $n, 0));
for ($i = 0; $i < $iterations; $i++) {
$x->contains($i % 128);
}
$t2 = microtime(true);
unset($x);
$t3 = microtime(true);
printf("Repeated search LowMemoryVector n=%d iterations=%d %.4f seconds\n", $n, $iterations, $t2 - $t1, $t3-$t2);
}
function bench_array(int $n, int $iterations) {
$t1=microtime(true);
$x = array_fill(0, $n, 0);
for ($i = 0; $i < $iterations; $i++) {
in_array($i % 128, $x);
}
$t2 = microtime(true);
printf("Repeated search array n=%d iterations=%d %.4f seconds\n", $n, $iterations, $t2 - $t1);
}
function bench_set(int $n, int $iterations) {
$t1=microtime(true);
$x = new Teds\StrictSet(array_fill(0, $n, 0));
for ($i = 0; $i < $iterations; $i++) {
$x->contains($i % 128);
}
$t2 = microtime(true);
printf("Repeated search Teds\StrictSet n=%d iterations=%d %.4f seconds\n", $n, $iterations, $t2 - $t1);
}
function bench_sorted_set(int $n, int $iterations) {
$t1=microtime(true);
$x = new Teds\StrictTreeSet(array_fill(0, $n, 0));
for ($i = 0; $i < $iterations; $i++) {
$x->contains($i % 128);
}
$t2 = microtime(true);
printf("Repeated search Teds\StrictTreeSet n=%d iterations=%d %.4f seconds\n", $n, $iterations, $t2 - $t1);
}
echo "Testing repeated search for a missing signed **byte** value in various collection types. Larger integers will be slower.\n";
echo "NOTE: The Set types will remove duplicate values\n\n";
foreach ([
[100000, 1000],
[10000, 10000],
[1000, 100000],
[100, 1000000],
[10, 10000000],
] as [$n, $iterations]) {
bench_lmv($n, $iterations);
bench_sorted_set($n, $iterations);
bench_set($n, $iterations);
bench_array($n, $iterations);
echo "\n";
}
/*
Testing repeated search for a missing signed **byte** value in various collection types. Larger integers will be slower.
Repeated search LowMemoryVector n=100000 iterations=1000 0.0022 seconds
Repeated search Teds\StrictTreeSet n=100000 iterations=1000 0.0011 seconds
Repeated search Teds\StrictSet n=100000 iterations=1000 0.0011 seconds
Repeated search array n=100000 iterations=1000 0.1670 seconds
Repeated search LowMemoryVector n=10000 iterations=10000 0.0010 seconds
Repeated search Teds\StrictTreeSet n=10000 iterations=10000 0.0003 seconds
Repeated search Teds\StrictSet n=10000 iterations=10000 0.0003 seconds
Repeated search array n=10000 iterations=10000 0.1587 seconds
Repeated search LowMemoryVector n=1000 iterations=100000 0.0034 seconds
Repeated search Teds\StrictTreeSet n=1000 iterations=100000 0.0026 seconds
Repeated search Teds\StrictSet n=1000 iterations=100000 0.0025 seconds
Repeated search array n=1000 iterations=100000 0.1609 seconds
Repeated search LowMemoryVector n=100 iterations=1000000 0.0271 seconds
Repeated search Teds\StrictTreeSet n=100 iterations=1000000 0.0259 seconds
Repeated search Teds\StrictSet n=100 iterations=1000000 0.0249 seconds
Repeated search array n=100 iterations=1000000 0.1907 seconds
Repeated search LowMemoryVector n=10 iterations=10000000 0.2679 seconds
Repeated search Teds\StrictTreeSet n=10 iterations=10000000 0.2592 seconds
Repeated search Teds\StrictSet n=10 iterations=10000000 0.2507 seconds
Repeated search array n=10 iterations=10000000 0.3715 seconds
*/