X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=XMLTree.cpp;h=f155d3e8e18ec4c55f3171fdc0b19894e2e7fdc4;hb=683339b3175e9eb1cbc88eaa28a3817cb94b48b4;hp=b93e75a5e773d737af40667a91f229de8260121c;hpb=a0808cd570d8645798ae80287d2b4845ceea36a2;p=SXSI%2FXMLTree.git diff --git a/XMLTree.cpp b/XMLTree.cpp index b93e75a..f155d3e 100644 --- a/XMLTree.cpp +++ b/XMLTree.cpp @@ -120,7 +120,10 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text) char buffer[1024]; XMLTree *XML_Tree; int i; - + size_t s_tree = 0; + long s_text = 0; + size_t s_tags = 0; + // first load the tree topology sprintf(buffer, "%s.srx", filename); fp = fopen(buffer, "r"); @@ -134,10 +137,18 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text) XML_Tree->Par = (bp *)umalloc(sizeof(bp)); loadTree(XML_Tree->Par, fp); - + + s_tree += sizeof(bp); + // stores the table with tag names ufread(&XML_Tree->ntagnames, sizeof(int), 1, fp); + + s_tree += sizeof(int); + XML_Tree->TagName = (unsigned char **)umalloc(XML_Tree->ntagnames*sizeof(unsigned char *)); + + s_tags += sizeof(unsigned char*)*XML_Tree->ntagnames; + for (i=0; intagnames;i++) { @@ -155,6 +166,7 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text) int len = strlen((const char*)buffer); XML_Tree->TagName[i] = (unsigned char *)ucalloc(len,sizeof(char)); strncpy((char *)XML_Tree->TagName[i], (const char *)buffer,len - 1); + s_tags+= len*sizeof(char); } // loads the flags @@ -163,11 +175,18 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text) ufread(&(XML_Tree->initialized), sizeof(bool), 1, fp); ufread(&(XML_Tree->finished), sizeof(bool), 1, fp); ufread(&(XML_Tree->disable_tc), sizeof(bool), 1, fp); + + s_tree+=sizeof(bool)*4; if (!(XML_Tree->indexing_empty_texts)) XML_Tree->EBVector = static_bitsequence_rrr02::load(fp); - + + s_tree+= XML_Tree->EBVector->size(); + // loads the tags XML_Tree->Tags = static_sequence::load(fp); + s_tree+= XML_Tree->Tags->size(); + + s_text = ftell(fp); // loads the texts if (!XML_Tree->disable_tc){ @@ -177,7 +196,16 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text) else XML_Tree->Text = NULL; + s_text = ftell(fp) - s_text; fclose(fp); + + std::cerr << "Tree part is " << s_tree/1024 << " Kbytes,\n" + << "with node->tagid part " << XML_Tree->Tags->size()/1024 << "Kbytes \n" + << "size of Tag part : " << XML_Tree->Tags->length () << " elements\n" + << "sizof(unsigned int)* " << XML_Tree->Tags->length () << " = " << + sizeof(unsigned int) * XML_Tree->Tags->length () / 1024 << " Kbytes\n" + << "Tag part is " << s_tags/1024 << " Kbytes,\n" + << "Text collection is " << s_text/1024 << " Kbytes \n"; return XML_Tree; } @@ -627,9 +655,10 @@ treeNode XMLTree::ParentNode(DocID d) if (d == NULLT) return NULLT; - int s = d; - // Kim : I added the d+1. before that, else was select1(d) - // and gave wrong results but I'm really poking a dead bear with a stick here. + int s; + // OJO : Kim : I added the d+1. before that, else branch was + // EBVector->select1(d) + // and gave wrong results (I'm really poking a bear with a stick here). if (indexing_empty_texts) s = d; else s = EBVector->select1(d+1);