我对Rice解码器(和编码器)做了一个简单的实现:
void rice_decode(int k) {
int i = 0
int j = 0;
int x = 0;
while(i < size-k) {
int q = 0;
while(get(i) == 0) {
q++;
i++;
}
x = q<<k;
i++;
for(j=0; j<k; j++) {
x += get(i+j)<<j;
}
i += k;
printf("%i\n", x);
x = 0;
}
}
具有size
输入位集的大小、get(i)
返回位集的i
第 - 位的原语以及k
Rice 参数。由于我关心性能,我还使用预计算进行了更精细的实现,速度更快。然而,当我打开-O3
标志时gcc
,天真的实现实际上优于后者。
我的问题是:是否知道任何现有的 Rice 编码器/解码器(我更关心解码)的有效实现,它比这更好(我能找到的那些要么更慢,要么相当)?或者,您是否有任何聪明的想法可以使解码比预计算更快?