Benchmark App
This commit is contained in:
26
icbench.c
26
icbench.c
@ -66,6 +66,9 @@ static double tmmsec(tm_t tm) { return (double)tm/1000.0; }
|
|||||||
#include "bitutil.h"
|
#include "bitutil.h"
|
||||||
#include "ext/ext.c" // external functions for comparison. uncomment if not needed
|
#include "ext/ext.c" // external functions for comparison. uncomment if not needed
|
||||||
|
|
||||||
|
//#define bitdelta32( in, n, pa, start, mode) bitzigzag32( in, n, pa, start, mode)
|
||||||
|
//#define bitundx32(out, n, start, mode) bitunzigzag32(out, n, start, mode)
|
||||||
|
|
||||||
unsigned char *u32enc(unsigned *__restrict in, int n, unsigned *__restrict out) { unsigned *ip;
|
unsigned char *u32enc(unsigned *__restrict in, int n, unsigned *__restrict out) { unsigned *ip;
|
||||||
for(ip = in; ip != in+(n&~3); ) {
|
for(ip = in; ip != in+(n&~3); ) {
|
||||||
*out++ = *ip++;
|
*out++ = *ip++;
|
||||||
@ -238,7 +241,7 @@ unsigned char *besenc(unsigned *in, size_t n, unsigned char *out, int id, int mo
|
|||||||
//----------- copy ---------------------------------------------------------------------------------------------------------
|
//----------- copy ---------------------------------------------------------------------------------------------------------
|
||||||
case P_CPY: return u32enc( in, n, (unsigned *)out);
|
case P_CPY: return u32enc( in, n, (unsigned *)out);
|
||||||
//----------- variable byte ------------------------------------------------------------------------------------------------
|
//----------- variable byte ------------------------------------------------------------------------------------------------
|
||||||
case P_VB: return mode?vbd1enc32(in, n, out, -1):vbdenc32(in, n, out, 0);
|
case P_VB: return mode?vbd1enc32(in, n, out, -1):vbdenc32(in, n, out, 0); //case P_VB: bitdelta32( in, n, pa, -mode, mode); return vbenc32( pa, n, out);
|
||||||
|
|
||||||
case P_VBL: bitdelta32( in, n, pa, -mode, mode); return vbyteenc( pa, n, (unsigned *)out);
|
case P_VBL: bitdelta32( in, n, pa, -mode, mode); return vbyteenc( pa, n, (unsigned *)out);
|
||||||
case P_VBP: bitdelta32( in, n, pa, -mode, mode); return vbpolyenc(pa, n, out);
|
case P_VBP: bitdelta32( in, n, pa, -mode, mode); return vbpolyenc(pa, n, out);
|
||||||
@ -305,8 +308,7 @@ unsigned char *besdec(unsigned char *in, size_t n, unsigned *out, int id, int mo
|
|||||||
//------------- copy -------------------------------------------------------
|
//------------- copy -------------------------------------------------------
|
||||||
case P_CPY: in = u32dec( (unsigned *)in, n, out); break;
|
case P_CPY: in = u32dec( (unsigned *)in, n, out); break;
|
||||||
//------------- variable byte ----------------------------------------------
|
//------------- variable byte ----------------------------------------------
|
||||||
//case P_VB: in = vbdec32( in, n, out); unzigzag(out, n, mode); break;
|
case P_VB: in = mode?vbd1dec32( in, n, out, -1):vbddec32(in, n, out, 0); break; //case P_VB: in = vbdec32( in, n, out); bitundx32(out, n, -mode, mode); break;
|
||||||
case P_VB: in = mode?vbd1dec32( in, n, out, -1):vbddec32(in, n, out, 0); break;
|
|
||||||
|
|
||||||
case P_VBL: in = vbytedec( in, n, out); bitundx32(out, n, -mode, mode); break;
|
case P_VBL: in = vbytedec( in, n, out); bitundx32(out, n, -mode, mode); break;
|
||||||
case P_VBP: in = vbpolydec( in, n, out); bitundx32(out, n, -mode, mode); break;
|
case P_VBP: in = vbpolydec( in, n, out); bitundx32(out, n, -mode, mode); break;
|
||||||
@ -675,20 +677,20 @@ void vstest64(int id, int rm,int rx, unsigned n) { fprintf(stderr,"bitpack.n=%d
|
|||||||
|
|
||||||
unsigned char *op;
|
unsigned char *op;
|
||||||
switch(id) {
|
switch(id) {
|
||||||
case 0: op = efanoenc64(in, n, out, 0); break;
|
case 0: op = vbenc64( in, n, out); break;
|
||||||
case 1: op = p4denc64( in, n, out); break;
|
case 1: op = vsenc64( in, n, out); break;
|
||||||
case 2: op = bitpack64( in, n, out, b); break;
|
case 2: op = bitpack64( in, n, out, b); break;
|
||||||
case 3: op = vbenc64( in, n, out); break;
|
case 3: op = p4denc64( in, n, out); break;
|
||||||
case 4: op = vsenc64( in, n, out); break;
|
case 4: op = efanoenc64(in, n, out, 0); break;
|
||||||
}
|
}
|
||||||
fprintf(stderr,"%d ", (int)(op-out) );
|
fprintf(stderr,"%d ", (int)(op-out) );
|
||||||
memset(cpy, 0, sizeof(cpy));
|
memset(cpy, 0, sizeof(cpy));
|
||||||
switch(id) {
|
switch(id) {
|
||||||
case 0: efanodec64( out, n, cpy, 0); break;
|
case 0: vbdec64( out, n, cpy); break;
|
||||||
|
case 1: vsdec64( out, n, cpy); break;
|
||||||
case 2: bitunpack64(out, n, cpy, b); break;
|
case 2: bitunpack64(out, n, cpy, b); break;
|
||||||
case 3: vbdec64( out, n, cpy); break;
|
case 3: p4ddec64( out, n, cpy); break;
|
||||||
case 4: vsdec64( out, n, cpy); break;
|
case 4: efanodec64( out, n, cpy, 0); break;
|
||||||
case 1: p4ddec64( out, n, cpy); break;
|
|
||||||
}
|
}
|
||||||
for(i = 0; i < n; i++)
|
for(i = 0; i < n; i++)
|
||||||
if(in[i] != cpy[i]) {
|
if(in[i] != cpy[i]) {
|
||||||
@ -885,7 +887,7 @@ int main(int argc, char *argv[]) { int r;
|
|||||||
in[0] = n-1; s[0] = 0;
|
in[0] = n-1; s[0] = 0;
|
||||||
unsigned long long l = bench(in, n, blksize, out, n*5+OVD, s, tx, cpy, -1, mode);
|
unsigned long long l = bench(in, n, blksize, out, n*5+OVD, s, tx, cpy, -1, mode);
|
||||||
print(libs, l, inname, NULL); //printf("n=%d.%d\n", n-1,argc);
|
print(libs, l, inname, NULL); //printf("n=%d.%d\n", n-1,argc);
|
||||||
int i; for(i=0;libs[i].id>0;i++) slibs[i].tc += libs[i].tc,slibs[i].td += libs[i].td,slibs[i].l += libs[i].l;
|
int i; for(i=0;libs[i].id>=0;i++) slibs[i].tc += libs[i].tc,slibs[i].td += libs[i].td,slibs[i].l += libs[i].l;
|
||||||
totlen += l;
|
totlen += l;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user