Changeset: 2b52feee3dd9 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2b52feee3dd9
Modified Files:
        monetdb5/modules/mal/Tests/mosaic_dict.mal
        monetdb5/modules/mal/Tests/mosaic_dict.stable.out
        monetdb5/modules/mal/Tests/mosaic_dict_joins.mal
        monetdb5/modules/mal/Tests/mosaic_dict_joins.stable.out
        monetdb5/modules/mal/Tests/mosaic_dict_subselect.mal
        monetdb5/modules/mal/Tests/mosaic_dict_subselect.stable.out
        monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.mal
        monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.stable.out
        monetdb5/modules/mal/mosaic.c
        monetdb5/modules/mal/mosaic_delta.c
        monetdb5/modules/mal/mosaic_delta.h
        monetdb5/modules/mal/mosaic_dict.c
        monetdb5/modules/mal/mosaic_dict.h
        monetdb5/modules/mal/mosaic_rle.c
        monetdb5/modules/mal/mosaic_rle.h
        monetdb5/modules/mal/mosaic_zone.c
        monetdb5/modules/mal/mosaic_zone.h
Branch: mosaic
Log Message:

Percentage calculation cleanup


diffs (truncated from 339 to 300 lines):

diff --git a/monetdb5/modules/mal/Tests/mosaic_dict.mal 
b/monetdb5/modules/mal/Tests/mosaic_dict.mal
--- a/monetdb5/modules/mal/Tests/mosaic_dict.mal
+++ b/monetdb5/modules/mal/Tests/mosaic_dict.mal
@@ -7,7 +7,7 @@ bat.append(b,"2014-08-14 12:00:00":times
 b:= bat.append(b,b);
 
 io.print(b);
-x:= mosaic.compress(b,"dict test");
+x:= mosaic.compress(b,"dict test 100");
 #mosaic.dump(x);
 z:= mosaic.decompress(x);
 io.print(z);
diff --git a/monetdb5/modules/mal/Tests/mosaic_dict.stable.out 
b/monetdb5/modules/mal/Tests/mosaic_dict.stable.out
--- a/monetdb5/modules/mal/Tests/mosaic_dict.stable.out
+++ b/monetdb5/modules/mal/Tests/mosaic_dict.stable.out
@@ -26,7 +26,7 @@ function user.main():void;
     bat.append(b,"2014-08-14 12:00:00.000":timestamp);
     b := bat.append(b,b);
     io.print(b);
-    x := mosaic.compress(b,"dict test");
+    x := mosaic.compress(b,"dict test 100");
 #mosaic.dump(x); 
     z := mosaic.decompress(x);
     io.print(z);
diff --git a/monetdb5/modules/mal/Tests/mosaic_dict_joins.mal 
b/monetdb5/modules/mal/Tests/mosaic_dict_joins.mal
--- a/monetdb5/modules/mal/Tests/mosaic_dict_joins.mal
+++ b/monetdb5/modules/mal/Tests/mosaic_dict_joins.mal
@@ -7,7 +7,7 @@ bat.append(b,"2014-08-14 12:00:00":times
 b:= bat.append(b,b);
 
 io.print(b);
-x:= mosaic.compress(b,"dict test");
+x:= mosaic.compress(b,"dict test 100");
 #mosaic.dump(x);
 z:= mosaic.decompress(x);
 io.print(z);
diff --git a/monetdb5/modules/mal/Tests/mosaic_dict_joins.stable.out 
b/monetdb5/modules/mal/Tests/mosaic_dict_joins.stable.out
--- a/monetdb5/modules/mal/Tests/mosaic_dict_joins.stable.out
+++ b/monetdb5/modules/mal/Tests/mosaic_dict_joins.stable.out
@@ -26,7 +26,7 @@ function user.main():void;
     bat.append(b,"2014-08-14 12:00:00.000":timestamp);
     b := bat.append(b,b);
     io.print(b);
-    x := mosaic.compress(b,"dict test");
+    x := mosaic.compress(b,"dict test 100");
 #mosaic.dump(x); 
     z := mosaic.decompress(x);
     io.print(z);
diff --git a/monetdb5/modules/mal/Tests/mosaic_dict_subselect.mal 
b/monetdb5/modules/mal/Tests/mosaic_dict_subselect.mal
--- a/monetdb5/modules/mal/Tests/mosaic_dict_subselect.mal
+++ b/monetdb5/modules/mal/Tests/mosaic_dict_subselect.mal
@@ -7,7 +7,7 @@ bat.append(b,"2014-08-14 12:00:00":times
 b:= bat.append(b,b);
 
 io.print(b);
-x:= mosaic.compress(b,"dict test");
+x:= mosaic.compress(b,"dict test 100");
 #mosaic.dump(x);
 z:= mosaic.decompress(x);
 io.print(z);
diff --git a/monetdb5/modules/mal/Tests/mosaic_dict_subselect.stable.out 
b/monetdb5/modules/mal/Tests/mosaic_dict_subselect.stable.out
--- a/monetdb5/modules/mal/Tests/mosaic_dict_subselect.stable.out
+++ b/monetdb5/modules/mal/Tests/mosaic_dict_subselect.stable.out
@@ -26,7 +26,7 @@ function user.main():void;
     bat.append(b,"2014-08-14 12:00:00.000":timestamp);
     b := bat.append(b,b);
     io.print(b);
-    x := mosaic.compress(b,"dict test");
+    x := mosaic.compress(b,"dict test 100");
 #mosaic.dump(x); 
     z := mosaic.decompress(x);
     io.print(z);
diff --git a/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.mal 
b/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.mal
--- a/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.mal
+++ b/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.mal
@@ -8,7 +8,7 @@ bat.append(b,"2014-08-14 12:00:00":times
 b:= bat.append(b,b);
 
 io.print(b);
-x:= mosaic.compress(b,"dict test");
+x:= mosaic.compress(b,"dict test 10");
 #mosaic.dump(x);
 z:= mosaic.decompress(x);
 io.print(z);
diff --git a/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.stable.out 
b/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.stable.out
--- a/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.stable.out
+++ b/monetdb5/modules/mal/Tests/mosaic_dict_thetasubselect.stable.out
@@ -27,7 +27,7 @@ function user.main():void;
     bat.append(b,"2014-08-14 12:00:00.000":timestamp);
     b := bat.append(b,b);
     io.print(b);
-    x := mosaic.compress(b,"dict test");
+    x := mosaic.compress(b,"dict test 10");
 #mosaic.dump(x); 
     z := mosaic.decompress(x);
     io.print(z);
diff --git a/monetdb5/modules/mal/mosaic.c b/monetdb5/modules/mal/mosaic.c
--- a/monetdb5/modules/mal/mosaic.c
+++ b/monetdb5/modules/mal/mosaic.c
@@ -178,7 +178,7 @@ MOScompressInternal(Client cntxt, int *r
        str msg = MAL_SUCCEED;
        MOStask task;
        int cand;
-       lng chunksize=0, ch;
+       lng percentage=0, perc;
        int filter[MOSAIC_METHODS];
        
        if( properties)
@@ -188,9 +188,10 @@ MOScompressInternal(Client cntxt, int *r
                for( i = 0; i< MOSAIC_METHODS; i++)
                        filter[i]= 1;
        if( properties && (c = strstr(properties,"test")) ){
-               if ( atoi(c+4) < DICTSIZE)
-                       dictsize = atoi(c+4);
-               else
+               if ( atoi(c+4) < DICTSIZE){
+                       if( atoi(c+4))
+                               dictsize = atoi(c+4);
+               } else
                        dictsize = 2;
        }
 
@@ -250,33 +251,33 @@ MOScompressInternal(Client cntxt, int *r
        while(task->elm > 0){
                // default is to extend the non-compressed block
                cand = MOSAIC_NONE;
-               ch =0;
-               chunksize = 1;
+               perc = 100;
+               percentage = 100;
                
                // select candidate amongst those
                if (filter[MOSAIC_RLE])
-                       ch = MOSestimate_rle(cntxt,task);
-               if ( ch > chunksize){
+                       perc = MOSestimate_rle(cntxt,task);
+               if ( perc < percentage){
                        cand = MOSAIC_RLE;
-                       chunksize = ch;
+                       percentage = perc;
                }
                if (filter[MOSAIC_DICT])
-                       ch = MOSestimate_dict(cntxt,task);
-               if ( ch > chunksize){
+                       perc = MOSestimate_dict(cntxt,task);
+               if ( perc <= percentage){
                        cand = MOSAIC_DICT;
-                       chunksize = ch;
+                       percentage = perc;
                }
                if (filter[MOSAIC_ZONE])
-                       ch = MOSestimate_zone(cntxt,task);
-               if ( ch > chunksize){
+                       perc = MOSestimate_zone(cntxt,task);
+               if ( perc < percentage){
                        cand = MOSAIC_ZONE;
-                       chunksize = ch;
+                       percentage = perc;
                }
                if (filter[MOSAIC_DELTA])
-                       ch = MOSestimate_delta(cntxt,task);
-               if ( ch > chunksize){
+                       perc = MOSestimate_delta(cntxt,task);
+               if ( perc < percentage){
                        cand = MOSAIC_DELTA;
-                       chunksize = ch;
+                       percentage = perc;
                }
 
                // apply the compression to a chunk
diff --git a/monetdb5/modules/mal/mosaic_delta.c 
b/monetdb5/modules/mal/mosaic_delta.c
--- a/monetdb5/modules/mal/mosaic_delta.c
+++ b/monetdb5/modules/mal/mosaic_delta.c
@@ -64,13 +64,13 @@ MOSskip_delta(MOStask task)
                        break;\
                val = *w;\
        }\
-       chunksize = i;\
+       percentage = 100 * (sizeof(TYPE)+(int)i-1) / ((int)i * sizeof(TYPE));\
 }
 
-lng
+int
 MOSestimate_delta(Client cntxt, MOStask task)
 {      BUN i = -1;
-       lng chunksize = 0;
+       int percentage = 0;
        (void) cntxt;
 
        switch(ATOMstorage(task->type)){
@@ -84,10 +84,11 @@ MOSestimate_delta(Client cntxt, MOStask 
                                        break;
                                val = *w;
                        }
-                       chunksize = i;
+                       percentage = 100 * (sizeof(int)+(int)i-1) / ((int)i * 
sizeof(int));
                }
        }
-       return chunksize;
+       mnstr_printf(cntxt->fdout,"#estimate delta %d elm %d 
perc\n",(int)i,percentage);
+       return percentage;
 }
 
 #define DELTAcompress(TYPE)\
diff --git a/monetdb5/modules/mal/mosaic_delta.h 
b/monetdb5/modules/mal/mosaic_delta.h
--- a/monetdb5/modules/mal/mosaic_delta.h
+++ b/monetdb5/modules/mal/mosaic_delta.h
@@ -32,7 +32,7 @@
 mosaic_export void MOSdump_delta(Client cntxt, MOStask task);
 mosaic_export void MOSadvance_delta(MOStask task);
 mosaic_export void MOSskip_delta(MOStask task);
-mosaic_export lng MOSestimate_delta(Client cntxt, MOStask task);
+mosaic_export int MOSestimate_delta(Client cntxt, MOStask task);
 mosaic_export void MOScompress_delta(Client cntxt, MOStask task);
 mosaic_export void MOSdecompress_delta(Client cntxt, MOStask task);
 mosaic_export str MOSsubselect_delta(Client cntxt,  MOStask task, BUN first, 
BUN last, void *low, void *hgh, bit *li, bit *hi, bit *anti);
diff --git a/monetdb5/modules/mal/mosaic_dict.c 
b/monetdb5/modules/mal/mosaic_dict.c
--- a/monetdb5/modules/mal/mosaic_dict.c
+++ b/monetdb5/modules/mal/mosaic_dict.c
@@ -95,14 +95,16 @@ MOSskip_dict(MOStask task)
                        cnt++;\
                }\
        }\
+       if(i) percentage = 100 * sizeof(TYPE) * dictsize / ((int)i * 
sizeof(TYPE));\
 }
 
 // calculate the expected reduction using DICT in terms of elements compressed
-lng
+int
 MOSestimate_dict(Client cntxt, MOStask task)
 {      BUN i = -1;
        int cnt =0,j;
        lng *size;
+       int percentage= 99;
        (void) cntxt;
 
        // use the dst to avoid overwriting noneblocked
@@ -125,9 +127,11 @@ MOSestimate_dict(Client cntxt, MOStask t
                                        cnt++;
                                }
                        }
+                       if(i) percentage = 100 * sizeof(int) * dictsize / 
((int)i * sizeof(int));
                }
        }
-       return cnt; // for later cnt >dictsize? cnt-dictsize:0;
+       mnstr_printf(cntxt->fdout,"#estimate dict %d elm %d 
perc\n",(int)i,percentage);
+       return percentage; 
 }
 
 // insert a series of values into the compressor block using dictionary
diff --git a/monetdb5/modules/mal/mosaic_dict.h 
b/monetdb5/modules/mal/mosaic_dict.h
--- a/monetdb5/modules/mal/mosaic_dict.h
+++ b/monetdb5/modules/mal/mosaic_dict.h
@@ -34,7 +34,7 @@ mosaic_export int dictsize;
 mosaic_export void MOSdump_dict(Client cntxt, MOStask task);
 mosaic_export void MOSadvance_dict(MOStask task);
 mosaic_export void MOSskip_dict(MOStask task);
-mosaic_export lng MOSestimate_dict(Client cntxt, MOStask task);
+mosaic_export int MOSestimate_dict(Client cntxt, MOStask task);
 mosaic_export void MOScompress_dict(Client cntxt, MOStask task);
 mosaic_export void MOSdecompress_dict(Client cntxt, MOStask task);
 mosaic_export str MOSsubselect_dict(Client cntxt,  MOStask task, BUN first, 
BUN last, void *low, void *hgh, bit *li, bit *hi, bit *anti);
diff --git a/monetdb5/modules/mal/mosaic_rle.c 
b/monetdb5/modules/mal/mosaic_rle.c
--- a/monetdb5/modules/mal/mosaic_rle.c
+++ b/monetdb5/modules/mal/mosaic_rle.c
@@ -85,14 +85,14 @@ MOSskip_rle(MOStask task)
        for(i =1; i < task->elm; i++)\
        if ( ((TYPE*)task->src)[i] != val)\
                break;\
-       chunksize = i;\
+       percentage = 100 * sizeof(TYPE)/ ( (int)i * sizeof(TYPE));\
 }
 
 // calculate the expected reduction using RLE in terms of elements compressed
-lng
+int
 MOSestimate_rle(Client cntxt, MOStask task)
 {      BUN i = -1;
-       lng chunksize = 0;
+       int percentage = 0;
        (void) cntxt;
 
        switch(ATOMstorage(task->type)){
@@ -107,10 +107,11 @@ MOSestimate_rle(Client cntxt, MOStask ta
                        for(i =1; i<task->elm; i++)
                        if ( ((int*)task->src)[i] != val)
                                break;
-                       chunksize = i;
+                       percentage = 100 * sizeof(int)/ ( i * sizeof(int));
                }
        }
-       return chunksize;
+       mnstr_printf(cntxt->fdout,"#estimate rle %d elm %d 
perc\n",(int)i,percentage);
+       return percentage;
 }
 
 // insert a series of values into the compressor block using rle.
diff --git a/monetdb5/modules/mal/mosaic_rle.h 
b/monetdb5/modules/mal/mosaic_rle.h
--- a/monetdb5/modules/mal/mosaic_rle.h
+++ b/monetdb5/modules/mal/mosaic_rle.h
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to