Changeset: 987c299608c1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=987c299608c1
Modified Files:
monetdb5/modules/mal/mosaic_prefix.c
Branch: mosaic
Log Message:
Minor counting adjustments
diffs (112 lines):
diff --git a/monetdb5/modules/mal/mosaic_prefix.c
b/monetdb5/modules/mal/mosaic_prefix.c
--- a/monetdb5/modules/mal/mosaic_prefix.c
+++ b/monetdb5/modules/mal/mosaic_prefix.c
@@ -146,8 +146,8 @@ MOSskip_prefix(Client cntxt, MOStask tas
// calculate the expected reduction
flt
MOSestimate_prefix(Client cntxt, MOStask task)
-{ BUN i = -1;
- flt factor = 1.0;
+{ BUN i = 0;
+ flt factor = 0.0;
int bits, size;
lng store;
(void) cntxt;
@@ -166,16 +166,18 @@ MOSestimate_prefix(Client cntxt, MOStask
break;
}
Prefix(bits, mask, val, val2, 8);
+ if( bits == 0)
+ break;
val = *v & mask;
for(w=v, i = 0; i < task->elm; w++, i++){
if ( val != (*w & mask) )
break;
}
if ( i > MOSlimit() ) i = MOSlimit();
- bits = i * (8 -bits);
+ bits = i * (8-bits);
store = bits/8 + ((bits % 8) >0);
- store = MosaicBlkSize + 2 * sizeof(int) + wordaligned(
store,int);
- factor = ( (flt)i * sizeof(int))/ store;
+ store = wordaligned( MosaicBlkSize + 2 * sizeof(bte) +
store,bte);
+ factor = ( (flt)i * sizeof(bte))/ store;
}
break;
case 2:
@@ -187,16 +189,18 @@ MOSestimate_prefix(Client cntxt, MOStask
break;
}
Prefix(bits, mask, val, val2, 16);
+ if( bits == 0)
+ break;
val = *v & mask;
for(w=v,i = 0; i < task->elm; w++, i++){
if ( val != (*w & mask) )
break;
}
if ( i > MOSlimit() ) i = MOSlimit();
- bits = i * (16 -bits);
+ bits = i * (16-bits);
store = bits/8 + ((bits % 8) >0);
- store = MosaicBlkSize + 2 * sizeof(int) + wordaligned(
store,int);
- factor = ( (flt)i * sizeof(int))/ store;
+ store = wordaligned( MosaicBlkSize + 2 * sizeof(sht) +
store,sht);
+ factor = ( (flt)i * sizeof(sht))/ store;
}
break;
case 4:
@@ -208,17 +212,19 @@ MOSestimate_prefix(Client cntxt, MOStask
break;
}
Prefix(bits, mask, val, val2, 32);
+ if( bits == 0)
+ break;
val = *v & mask;
for(w=v,i = 0; i < task->elm; w++, i++){
if ( val != (*w & mask) )
break;
}
- if ( i > MOSlimit() ) i = MOSlimit();
- bits = i * (32 -bits);
- store = bits/8 + ((bits % 8) >0);
- store = MosaicBlkSize + 2 * sizeof(int) +
wordaligned( store,int);
- factor = ( (flt)i * sizeof(int))/ store;
- }
+ if ( i > MOSlimit() ) i = MOSlimit();
+ bits = i * (32-bits);
+ store = bits/8 + ((bits % 8) >0);
+ store = wordaligned( MosaicBlkSize + 2 * sizeof(int) +
store,int);
+ factor = ( (flt)i * sizeof(int))/ store;
+ }
break;
case 8:
{ lng *v = (lng*) task->src, *w= v+1, val= *v,val2= *w,
mask;
@@ -229,20 +235,23 @@ MOSestimate_prefix(Client cntxt, MOStask
break;
}
Prefix(bits, mask, val, val2, 64);
+ if( bits == 0)
+ break;
val = *v & mask;
+ if( bits)
for(w=v, i = 0; i < task->elm; w++, i++){
if ( val != (*w & mask) )
break;
}
if ( i > MOSlimit() ) i = MOSlimit();
- bits = i * (64 -bits);
+ bits = i * (64-bits);
store = bits/8 + ((bits % 8) >0);
- store = MosaicBlkSize + 2 * sizeof(int) + wordaligned(
store,int);
- factor = ( (flt)i * sizeof(int))/ store;
+ store = wordaligned(MosaicBlkSize + 2 * sizeof(lng) +
store,lng);
+ factor = ( (flt)i * sizeof(lng))/ store;
}
}
#ifdef _DEBUG_MOSAIC_
- mnstr_printf(cntxt->fdout,"#estimate rle "BUNFMT" elm %4.3f
factor\n",i,factor);
+ mnstr_printf(cntxt->fdout,"#estimate prefix "BUNFMT" elm %4.3f
factor\n",i,factor);
#endif
return factor;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list