Skip to content

Commit f6e93c6

Browse files
varunkumarjoseph-fox
authored andcommitted
Add support for xxhash
1 parent 3ec8d13 commit f6e93c6

File tree

4 files changed

+25
-16
lines changed

4 files changed

+25
-16
lines changed

pybloom_live/benchmarks.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
#!/usr/bin/env python
22
#
33
"""Test performance of BloomFilter at a set capacity and error rate."""
4+
import math
45
import sys
6+
import time
7+
8+
import bitarray
9+
510
from pybloom import BloomFilter
6-
import bitarray, math, time
711
from utils import range_fn
812

913

pybloom_live/pybloom.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,15 @@
55
Requires the bitarray library: http://pypi.python.org/pypi/bitarray/
66
"""
77
from __future__ import absolute_import
8-
import math
9-
import hashlib
8+
109
import copy
11-
from pybloom_live.utils import range_fn, is_string_io, running_python_3
12-
from struct import unpack, pack, calcsize
10+
import hashlib
11+
import math
12+
from struct import calcsize, pack, unpack
13+
14+
import xxhash
15+
16+
from pybloom_live.utils import is_string_io, range_fn, running_python_3
1317

1418
try:
1519
import bitarray
@@ -34,7 +38,7 @@ def make_hashfuncs(num_slices, num_bits):
3438
elif total_hash_bits > 128:
3539
hashfn = hashlib.sha1
3640
else:
37-
hashfn = hashlib.md5
41+
hashfn = xxhash.xxh128
3842

3943
fmt = fmt_code * (hashfn().digest_size // chunk_size)
4044
num_salts, extra = divmod(num_slices, len(fmt))

pybloom_live/test_pybloom.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
from __future__ import absolute_import
2+
23
from pybloom_live.pybloom import (BloomFilter, ScalableBloomFilter,
34
make_hashfuncs)
4-
from pybloom_live.utils import running_python_3, range_fn
5+
from pybloom_live.utils import range_fn, running_python_3
56

67
try:
7-
import StringIO
88
import cStringIO
9+
import StringIO
910
except ImportError:
1011
pass
1112

1213
import io
13-
14-
import unittest
1514
import random
1615
import tempfile
16+
import unittest
1717

1818
import pytest
1919

2020

2121
class TestMakeHashFuncs(unittest.TestCase):
2222
def test_make_hashfuncs_returns_hashfn(self):
2323
make_hashes, hashfn = make_hashfuncs(100, 20)
24-
self.assertEquals('openssl_sha512', hashfn.__name__)
24+
self.assertEqual('openssl_sha512', hashfn.__name__)
2525
make_hashes, hashfn = make_hashfuncs(20, 3)
26-
self.assertEquals('openssl_sha384', hashfn.__name__)
26+
self.assertEqual('openssl_sha384', hashfn.__name__)
2727
make_hashes, hashfn = make_hashfuncs(15, 2)
28-
self.assertEquals('openssl_sha256', hashfn.__name__)
28+
self.assertEqual('openssl_sha256', hashfn.__name__)
2929
make_hashes, hashfn = make_hashfuncs(10, 2)
30-
self.assertEquals('openssl_sha1', hashfn.__name__)
30+
self.assertEqual('openssl_sha1', hashfn.__name__)
3131
make_hashes, hashfn = make_hashfuncs(5, 1)
32-
self.assertEquals('openssl_md5', hashfn.__name__)
32+
self.assertEqual('xxh3_128', hashfn.__name__)
3333

3434

3535
class TestUnionIntersection(unittest.TestCase):

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
bitarray>=0.3.4
1+
bitarray>=0.3.4
2+
xxhash>=3.0.0

0 commit comments

Comments
 (0)