testbloom.go 966 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package main
  2. import (
  3. "runtime"
  4. "strconv"
  5. "time"
  6. "gitee.com/wecisecode/util/logger"
  7. "github.com/willf/bloom"
  8. )
  9. func main() {
  10. // 121 seconds , 25G
  11. //filter := bloom.NewWithEstimates(200000000, 0.0001)
  12. //126, 2.5G
  13. //filter := bloom.NewWithEstimates(20000000, 0.00001)
  14. //122, 2.5G
  15. //filter := bloom.NewWithEstimates(20000000, 0.000001)
  16. //153, 2.5G
  17. //filter := bloom.NewWithEstimates(20000000, 0.0000001)
  18. //156, 254m
  19. filter := bloom.NewWithEstimates(2000000, 0.0000001)
  20. for i := 0; i < 2000000; i++ {
  21. if i%10000 == 0 {
  22. logger.Info("set now ==>", i)
  23. }
  24. filter.Add([]byte("straaaa" + strconv.Itoa(i)))
  25. }
  26. st := time.Now().UnixNano()
  27. for i := 0; i < 150000; i++ {
  28. filter.Test([]byte("straaaa" + strconv.Itoa(i)))
  29. }
  30. ed := time.Now().UnixNano()
  31. logger.Info("diff ==>", (ed-st)/1e6)
  32. var mem runtime.MemStats
  33. runtime.ReadMemStats(&mem)
  34. logger.Infof("TotalAlloc = %v MiB", mem.TotalAlloc/1024/1024)
  35. time.Sleep(100 * time.Second)
  36. }