Advertisement
Guest User

Untitled

a guest
Jun 27th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. # coding: utf-8
  2. import cProfile
  3. import threading
  4. import sys
  5. sys.path.append('/mfs/datasupport/python-bloomfilter')
  6. from pybloom import BloomFilter
  7.  
  8.  
  9. TEST_KEYS_NUM = 1000000
  10. KEYS = [i for i in range(TEST_KEYS_NUM)]
  11.  
  12.  
  13. def add_keys(bf, keys):
  14. for k in keys:
  15. bf.add(k)
  16.  
  17.  
  18. def plain_write():
  19. bf = BloomFilter(capacity=TEST_KEYS_NUM, error_rate=0.0001)
  20. add_keys(bf, KEYS)
  21. return bf
  22.  
  23.  
  24. def concurrent_write():
  25. bf = BloomFilter(capacity=TEST_KEYS_NUM, error_rate=0.0001)
  26. thread_num = 5
  27. step = TEST_KEYS_NUM / thread_num
  28. for i in range(0, TEST_KEYS_NUM, step):
  29. t = threading.Thread(target=add_keys, args=(bf, KEYS[i:i+step],))
  30. t.start()
  31. return bf
  32.  
  33.  
  34. def test_concurrent_write_error_rate():
  35. bf = concurrent_write()
  36. true_negative = 0
  37. for i in range(TEST_KEYS_NUM):
  38. if i not in bf:
  39. true_negative += 1
  40. false_positive = 0
  41. for i in range(TEST_KEYS_NUM * 2, TEST_KEYS_NUM * 3):
  42. if i in bf:
  43. false_positive += 1
  44. print 'true_negative:', true_negative, true_negative / (TEST_KEYS_NUM + 0.0)
  45. print 'false_positve:', false_positive, false_positive / (TEST_KEYS_NUM + 0.0)
  46.  
  47.  
  48. if __name__ == '__main__':
  49. cProfile.run('plain_write()')
  50. cProfile.run('concurrent_write()')
  51. test_concurrent_write_error_rate()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement