antirez
0ab40d14df
ZREMRANGEBYLEX implemented.
2014-04-17 14:49:25 +02:00
antirez
78954ca3a2
ZREMRANGEBYLEX implemented.
2014-04-17 14:49:25 +02:00
antirez
07ea1eb083
Always pass sorted set range objects by reference.
2014-04-17 14:30:12 +02:00
antirez
8827dc4eec
Always pass sorted set range objects by reference.
2014-04-17 14:30:12 +02:00
antirez
0711f61616
ZREMRANGE* commands refactored into a single generic function.
2014-04-17 14:19:14 +02:00
antirez
95098b7230
ZREMRANGE* commands refactored into a single generic function.
2014-04-17 14:19:14 +02:00
antirez
00e9dc8b75
Sorted set lex ranges stress tester.
2014-04-17 10:25:58 +02:00
antirez
c0ccd4da7d
Sorted set lex ranges stress tester.
2014-04-17 10:25:58 +02:00
antirez
cd35352677
Basic ZRANGEBYLEX / ZLEXCOUNT tests.
2014-04-17 00:08:11 +02:00
antirez
5c48432340
Basic ZRANGEBYLEX / ZLEXCOUNT tests.
2014-04-17 00:08:11 +02:00
antirez
35a4c0c9d3
Pass by pointer and release of lex ranges.
...
Given that the code was written with a 2 years pause... something
strange happened in the middle. So there was no function to free a
lex range min/max objects, and in some places the range was passed by
value.
2014-04-16 23:55:58 +02:00
antirez
bcab07f7fc
Pass by pointer and release of lex ranges.
...
Given that the code was written with a 2 years pause... something
strange happened in the middle. So there was no function to free a
lex range min/max objects, and in some places the range was passed by
value.
2014-04-16 23:55:58 +02:00
antirez
ded5cbbd8f
ZLEXCOUNT implemented.
...
Like ZCOUNT for lexicographical ranges.
2014-04-16 12:17:00 +02:00
antirez
8b5e0b213e
ZLEXCOUNT implemented.
...
Like ZCOUNT for lexicographical ranges.
2014-04-16 12:17:00 +02:00
antirez
20d49e3ac9
More HyperLogLog tests.
2014-04-16 09:17:38 +02:00
antirez
cffeafe391
More HyperLogLog tests.
2014-04-16 09:17:38 +02:00
antirez
fc3426c687
HyperLogLog invalid representation error code set to INVALIDOBJ.
2014-04-16 09:10:30 +02:00
antirez
8e8f8189eb
HyperLogLog invalid representation error code set to INVALIDOBJ.
2014-04-16 09:10:30 +02:00
antirez
e105f2a645
PFDEBUG TODENSE added.
...
Converts HyperLogLogs from sparse to dense. Used for testing.
2014-04-16 09:05:42 +02:00
antirez
0bbdaca6a0
PFDEBUG TODENSE added.
...
Converts HyperLogLogs from sparse to dense. Used for testing.
2014-04-16 09:05:42 +02:00
antirez
1dca87d69c
User-defined switch point between sparse-dense HLL encodings.
2014-04-15 17:46:51 +02:00
antirez
402110f9fd
User-defined switch point between sparse-dense HLL encodings.
2014-04-15 17:46:51 +02:00
antirez
2736ec0d0f
PFSELFTEST improved with sparse encoding checks.
2014-04-15 10:10:38 +02:00
antirez
d541f65d66
PFSELFTEST improved with sparse encoding checks.
2014-04-15 10:10:38 +02:00
antirez
c5d86e9db9
PFDEBUG ENCODING added.
2014-04-14 19:35:00 +02:00
antirez
dde8dff73f
PFDEBUG ENCODING added.
2014-04-14 19:35:00 +02:00
antirez
ddc1186dbf
Set HLL_SPARSE_MAX to 3000.
...
After running a few benchmarks, 3000 looks like a reasonable value to
keep HLLs with a few thousand elements small while the CPU cost is
still not huge.
This covers all the cases where the dense representation would use N
orders of magnitude more space, like in the case of many HLLs with
carinality of a few tens or hundreds.
It is not impossible that in the future this gets user configurable,
however it is easy to pick an unreasoable value just looking at savings
in the space dimension without checking what happens in the time
dimension.
2014-04-14 16:15:55 +02:00
antirez
54f0156e8c
Set HLL_SPARSE_MAX to 3000.
...
After running a few benchmarks, 3000 looks like a reasonable value to
keep HLLs with a few thousand elements small while the CPU cost is
still not huge.
This covers all the cases where the dense representation would use N
orders of magnitude more space, like in the case of many HLLs with
carinality of a few tens or hundreds.
It is not impossible that in the future this gets user configurable,
however it is easy to pick an unreasoable value just looking at savings
in the space dimension without checking what happens in the time
dimension.
2014-04-14 16:15:55 +02:00
antirez
bff89bd0a3
Error message for invalid HLL objects unified.
2014-04-14 16:11:54 +02:00
antirez
848d0461f9
Error message for invalid HLL objects unified.
2014-04-14 16:11:54 +02:00
antirez
cd73060972
PFMERGE fixed to work with sparse encoding.
2014-04-14 16:09:32 +02:00
antirez
81ceef7d22
PFMERGE fixed to work with sparse encoding.
2014-04-14 16:09:32 +02:00
antirez
f5fa2985f8
Mark PFDEBUG as write command in the commands table.
...
It is safer since it is able to have side effects.
2014-04-14 15:57:50 +02:00
antirez
9df77fc0c4
Mark PFDEBUG as write command in the commands table.
...
It is safer since it is able to have side effects.
2014-04-14 15:57:50 +02:00
antirez
4a43c113c5
Correctly replicate PFDEBUG GETREG.
...
Even if it is a debugging command, make sure that when it forces a
change in encoding, the command is propagated.
2014-04-14 15:57:19 +02:00
antirez
3bc35f9ce9
Correctly replicate PFDEBUG GETREG.
...
Even if it is a debugging command, make sure that when it forces a
change in encoding, the command is propagated.
2014-04-14 15:57:19 +02:00
antirez
1e7f95441f
Added assertion in hllSparseAdd() when promotion to dense occurs.
...
If we converted to dense, a register must be updated in the dense
representation.
2014-04-14 15:55:21 +02:00
antirez
ba0afb4566
Added assertion in hllSparseAdd() when promotion to dense occurs.
...
If we converted to dense, a register must be updated in the dense
representation.
2014-04-14 15:55:21 +02:00
antirez
f009069d7c
hllSparseAdd(): speed optimization.
...
Mostly by reordering opcodes check conditional by frequency of opcodes
in larger sparse-encoded HLLs.
2014-04-14 15:42:05 +02:00
antirez
e9cd51c7eb
hllSparseAdd(): speed optimization.
...
Mostly by reordering opcodes check conditional by frequency of opcodes
in larger sparse-encoded HLLs.
2014-04-14 15:42:05 +02:00
antirez
d2174e6c9b
Detect corrupted sparse HLLs in hllSparseSum().
2014-04-14 15:20:26 +02:00
antirez
681bf7468b
Detect corrupted sparse HLLs in hllSparseSum().
2014-04-14 15:20:26 +02:00
antirez
a84b91d052
hllSparseAdd(): faster code removing conditional.
...
Bottleneck found profiling. Big run time improvement found when testing
after the change.
2014-04-14 12:58:46 +02:00
antirez
db40da0a47
hllSparseAdd(): faster code removing conditional.
...
Bottleneck found profiling. Big run time improvement found when testing
after the change.
2014-04-14 12:58:46 +02:00
antirez
6c0f0eb21f
Comment typo in hllSparseAdd(). first -> fits.
2014-04-14 12:12:53 +02:00
antirez
4e0a99ba51
Comment typo in hllSparseAdd(). first -> fits.
2014-04-14 12:12:53 +02:00
antirez
8670ab5e11
Merge adjacent VAL opcodes in hllSparseAdd().
...
As more values are added splitting ZERO or XZERO opcodes, try to merge
adjacent VAL opcodes if they have the same value.
2014-04-14 12:11:39 +02:00
antirez
5532b5308a
Merge adjacent VAL opcodes in hllSparseAdd().
...
As more values are added splitting ZERO or XZERO opcodes, try to merge
adjacent VAL opcodes if they have the same value.
2014-04-14 12:11:39 +02:00
antirez
cba3a04160
More robust HLL_SPARSE macros protecting 'p' with parens.
...
Now the macros will work with arguments such as "ptr+1".
2014-04-14 11:49:53 +02:00
antirez
837ca39081
More robust HLL_SPARSE macros protecting 'p' with parens.
...
Now the macros will work with arguments such as "ptr+1".
2014-04-14 11:49:53 +02:00