Changeset: d2869f5a4f51 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d2869f5a4f51
Modified Files:
        monetdb5/modules/mosaic/TODO_MOSAIC.txt
        monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.out
        monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.out
        monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.out
        monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.out
        monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.out
        monetdb5/modules/mosaic/mosaic.c
        monetdb5/modules/mosaic/mosaic.h
        monetdb5/modules/mosaic/mosaic_delta.c
        monetdb5/modules/mosaic/mosaic_delta.h
        monetdb5/modules/mosaic/mosaic_dictionary.c
        monetdb5/modules/mosaic/mosaic_dictionary.h
        monetdb5/modules/mosaic/mosaic_frame.c
        monetdb5/modules/mosaic/mosaic_frame.h
        monetdb5/modules/mosaic/mosaic_linear.c
        monetdb5/modules/mosaic/mosaic_linear.h
        monetdb5/modules/mosaic/mosaic_prefix.c
        monetdb5/modules/mosaic/mosaic_prefix.h
        monetdb5/modules/mosaic/mosaic_raw.c
        monetdb5/modules/mosaic/mosaic_raw.h
        monetdb5/modules/mosaic/mosaic_runlength.c
        monetdb5/modules/mosaic/mosaic_runlength.h
Branch: mosaic
Log Message:

Loose coupling estimation and compression.


diffs (truncated from 1167 to 300 lines):

diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt 
b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
--- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt
+++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
@@ -15,6 +15,7 @@ Fix the task-factor array.
 See if we can re-introduce landmark stuff somehow.
 Fix/check/test MOSlayout.
 benchmark
+Do estimation before mosaic heap creation.That saves a potential heap extend.
 
 ####code issues####
 Update copyright.
diff --git a/monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.out 
b/monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.out
--- a/monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.out
+++ b/monetdb5/modules/mosaic/Tests/mosaic_bit_1.raw.stable.out
@@ -22,65 +22,7 @@ stdout of test 'mosaic_bit_1.raw` in dir
 # 16:26:45 >  
 
 MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-#BATmosaic: mosaic construction 15 usec
+#BATmosaic: mosaic construction 20 usec
 MOSdecompress_raw
 #--------------------------#
 # t    t       t  # name
diff --git a/monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.out 
b/monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.out
--- a/monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.out
+++ b/monetdb5/modules/mosaic/Tests/mosaic_date_1.raw.stable.out
@@ -22,36 +22,7 @@ stdout of test 'mosaic_date_1.raw` in di
 # 17:20:28 >  
 
 MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-#BATmosaic: mosaic construction 13 usec
+#BATmosaic: mosaic construction 16 usec
 MOSdecompress_raw
 #--------------------------#
 # t    t       t       t  # name
diff --git a/monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.out 
b/monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.out
--- a/monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.out
+++ b/monetdb5/modules/mosaic/Tests/mosaic_lng_1.raw.stable.out
@@ -22,36 +22,7 @@ stdout of test 'mosaic_lng_1.raw` in dir
 # 13:19:02 >  
 
 MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-#BATmosaic: mosaic construction 17 usec
+#BATmosaic: mosaic construction 18 usec
 MOSdecompress_raw
 #--------------------------#
 # t    t       t  # name
diff --git a/monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.out 
b/monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.out
--- a/monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.out
+++ b/monetdb5/modules/mosaic/Tests/mosaic_oid_1.raw.stable.out
@@ -22,36 +22,7 @@ stdout of test 'mosaic_oid_1.raw` in dir
 # 13:19:02 >  
 
 MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-#BATmosaic: mosaic construction 12 usec
+#BATmosaic: mosaic construction 22 usec
 MOSdecompress_raw
 #--------------------------#
 # t    t       t  # name
diff --git a/monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.out 
b/monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.out
--- a/monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.out
+++ b/monetdb5/modules/mosaic/Tests/mosaic_timestamp_1.raw.stable.out
@@ -22,36 +22,7 @@ stdout of test 'mosaic_timestamp_1.raw` 
 # 17:20:29 >  
 
 MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-MOScompress_raw
-#BATmosaic: mosaic construction 14 usec
+#BATmosaic: mosaic construction 17 usec
 MOSdecompress_raw
 #--------------------------#
 # t    t       t       t  # name
diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c
--- a/monetdb5/modules/mosaic/mosaic.c
+++ b/monetdb5/modules/mosaic/mosaic.c
@@ -187,6 +187,8 @@ MOSlayout(BAT *b, BAT *btech, BAT *bcoun
                        MOSsetCnt(TASK->blk,0);\
                        TASK->dst = MOScodevector(TASK);
 
+#define getFactor(ESTIMATION) ((flt) (ESTIMATION).uncompressed_size / 
(ESTIMATION).compressed_size)
+
 /* The compression orchestration is dealt with here.
  * We assume that the estimates for each scheme returns
  * the number of elements it applies to. Moreover, we
@@ -194,56 +196,115 @@ MOSlayout(BAT *b, BAT *btech, BAT *bcoun
  * This allows us to avoid expensive estimate calls when a small
  * sequence is found with high compression factor.
  */
-static int
-MOSoptimizerCost(MOStask task, int typewidth)
-{
-       int cand = MOSAIC_RAW;
-       float ratio = 1.0, fac = 1.0;
+static str
+MOSoptimizerCost(MOStask task, MosaicEstimation* current, const 
MosaicEstimation* previous) {
+       str result = MAL_SUCCEED;
+
+       MosaicEstimation estimations[MOSAICINDEX];
+       const int size = sizeof(estimations) / sizeof(MosaicEstimation);
+       for (int i = 0; i < size; i++) {
+               estimations[i].uncompressed_size = previous->uncompressed_size;
+               estimations[i].compressed_size = previous->compressed_size;
+               estimations[i].compression_strategy = 
previous->compression_strategy;
+               estimations[i].must_be_merged_with_previous = false;
+               estimations[i].is_applicable = false;
+       }
 
        // select candidate amongst those
-       if ( task->filter[MOSAIC_RLE]){
-               fac = MOSestimate_runlength(task);
-               if (fac > ratio){
-                       cand = MOSAIC_RLE;
-                       ratio = fac;
+       if (task->filter[MOSAIC_RAW]){
+               if( (result = MOSestimate_raw(task, &estimations[MOSAIC_RAW], 
previous))) {
+                       return result;
+               }
+       }
+       if (task->filter[MOSAIC_RLE]){
+               if( (result = MOSestimate_runlength(task, 
&estimations[MOSAIC_RLE], previous))) {
+                       return result;
+               }
+       }
+       if (task->filter[MOSAIC_DICT]){
+               if( (result = MOSestimate_dictionary(task, 
&estimations[MOSAIC_DICT], previous))) {
+                       return result;
                }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to