mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 09:36:41 -04:00
60 lines
2.6 KiB
Text
60 lines
2.6 KiB
Text
--- pybloom_live/benchmarks.py.orig 2018-07-22 09:08:15 UTC
|
|
+++ pybloom_live/benchmarks.py
|
|
@@ -2,9 +2,9 @@
|
|
#
|
|
"""Test performance of BloomFilter at a set capacity and error rate."""
|
|
import sys
|
|
-from pybloom import BloomFilter
|
|
+from .pybloom import BloomFilter
|
|
import bitarray, math, time
|
|
-from utils import range_fn
|
|
+from .utils import range_fn
|
|
|
|
|
|
def main(capacity=100000, request_error_rate=0.1):
|
|
@@ -14,18 +14,18 @@ def main(capacity=100000, request_error_rate=0.1):
|
|
for i in range_fn(0, f.capacity):
|
|
f.add(i, skip_check=True)
|
|
end = time.time()
|
|
- print("{:5.3f} seconds to add to capacity, {:10.2f} entries/second".format(
|
|
- end - start, f.capacity / (end - start)))
|
|
+ print(("{:5.3f} seconds to add to capacity, {:10.2f} entries/second".format(
|
|
+ end - start, f.capacity / (end - start))))
|
|
oneBits = f.bitarray.count(True)
|
|
zeroBits = f.bitarray.count(False)
|
|
- print "Number of 1 bits:", oneBits
|
|
- print "Number of 0 bits:", zeroBits
|
|
- print("Number of Filter Bits:", f.num_bits)
|
|
- print("Number of slices:", f.num_slices)
|
|
- print("Bits per slice:", f.bits_per_slice)
|
|
+ print("Number of 1 bits:", oneBits)
|
|
+ print("Number of 0 bits:", zeroBits)
|
|
+ print(("Number of Filter Bits:", f.num_bits))
|
|
+ print(("Number of slices:", f.num_slices))
|
|
+ print(("Bits per slice:", f.bits_per_slice))
|
|
print("------")
|
|
- print("Fraction of 1 bits at capacity: {:5.3f}".format(
|
|
- oneBits / float(f.num_bits)))
|
|
+ print(("Fraction of 1 bits at capacity: {:5.3f}".format(
|
|
+ oneBits / float(f.num_bits))))
|
|
# Look for false positives and measure the actual fp rate
|
|
trials = f.capacity
|
|
fp = 0
|
|
@@ -36,14 +36,14 @@ def main(capacity=100000, request_error_rate=0.1):
|
|
end = time.time()
|
|
print(("{:5.3f} seconds to check false positives, "
|
|
"{:10.2f} checks/second".format(end - start, trials / (end - start))))
|
|
- print("Requested FP rate: {:2.4f}".format(request_error_rate))
|
|
- print("Experimental false positive rate: {:2.4f}".format(fp / float(trials)))
|
|
+ print(("Requested FP rate: {:2.4f}".format(request_error_rate)))
|
|
+ print(("Experimental false positive rate: {:2.4f}".format(fp / float(trials))))
|
|
# Compute theoretical fp max (Goel/Gupta)
|
|
k = f.num_slices
|
|
m = f.num_bits
|
|
n = f.capacity
|
|
fp_theory = math.pow((1 - math.exp(-k * (n + 0.5) / (m - 1))), k)
|
|
- print("Projected FP rate (Goel/Gupta): {:2.6f}".format(fp_theory))
|
|
+ print(("Projected FP rate (Goel/Gupta): {:2.6f}".format(fp_theory)))
|
|
|
|
if __name__ == '__main__':
|
|
main()
|