aboutsummaryrefslogtreecommitdiff
path: root/examples/redis-unstable/utils/hyperloglog/hll-err.rb
diff options
context:
space:
mode:
Diffstat (limited to 'examples/redis-unstable/utils/hyperloglog/hll-err.rb')
-rw-r--r--examples/redis-unstable/utils/hyperloglog/hll-err.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/redis-unstable/utils/hyperloglog/hll-err.rb b/examples/redis-unstable/utils/hyperloglog/hll-err.rb
new file mode 100644
index 0000000..1278397
--- /dev/null
+++ b/examples/redis-unstable/utils/hyperloglog/hll-err.rb
@@ -0,0 +1,30 @@
1# hll-err.rb - Copyright (C) 2014-Present Redis Ltd.
2#
3# Licensed under your choice of (a) the Redis Source Available License 2.0
4# (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the
5# GNU Affero General Public License v3 (AGPLv3).
6#
7# Check error of HyperLogLog Redis implementation for different set sizes.
8
9require 'rubygems'
10require 'redis'
11require 'digest/sha1'
12
13r = Redis.new
14r.del('hll')
15i = 0
16while true do
17 100.times {
18 elements = []
19 1000.times {
20 ele = Digest::SHA1.hexdigest(i.to_s)
21 elements << ele
22 i += 1
23 }
24 r.pfadd('hll',elements)
25 }
26 approx = r.pfcount('hll')
27 abs_err = (approx-i).abs
28 rel_err = 100.to_f*abs_err/i
29 puts "#{i} vs #{approx}: #{rel_err}%"
30end