// exhaustive hunt for codec selection #include "../headers/common.h" #include "../headers/codecfactory.h" #include "../headers/caltime.h" #include "../headers/lr.h" #include "../headers/create_feature.h" int main() { using namespace Codecset; // We pick a CODEC std::vector data; std::ifstream srcFile("../data/standard/books_200M_uint32.txt",std::ios::in); //std::ofstream outfile("out.txt", std::ios::app); if(!srcFile) { std::cout << "error opening source file." << std::endl; return 0; } while(1){ uint32_t next ; srcFile >> next; if(srcFile.eof()){break;} data.push_back(next); } srcFile.close(); int N = data.size(); if (data.size() == 0) { std::cout << "Empty vector" << std::endl; return 0; } std::cout << "vector size = " << data.size() << std::endl; std::cout << "vector size = " << data.size() * sizeof(uint32_t) / 1024.0 << "KB" << std::endl; int blocks =100000; int block_size = data.size()/blocks; int delta =0; std::vector codec_fac; std::vector codec_name={"piecewise_fix","nonlinear_fix","FOR","rle"}; for(int i=0;i<(int)codec_name.size();i++){ IntegerCODEC &codec = *CODECFactory::getFromName(codec_name[i]); codec.init(blocks,block_size,delta); codec_fac.push_back(&codec); } std::vector block_start_vec; std::vector method_vec; int totalsize = 0; //outfile<< "len" <<" "<<"avg"<<" "<<"min"<<" "<<"max"<<" "<<"num_distinct"<<" "<<"rl"<<" label"<encodeArray8(data.data()+(i*block_size),block_size ,descriptor,i); int tmp_size = (res-descriptor); if(tmp_size recover(data.size()); totaltime =0.0; std::cout<<"decompress all!"<decodeArray8(block_start_vec[i], block_size, recover.data()+i*block_size, i); for(int j=0;j buffer(data.size()); double randomaccesstime =0.0; start = getNow(); uint32_t mark=0; for(int i=0;irandomdecodeArray8(block_start_vec[(int)i/block_size], i%block_size, buffer.data(), i/block_size); mark+=tmpvalue; if(data[i]!=tmpvalue){ std::cout<<"num: "<