char buffer[1024];\r
XMLTree *XML_Tree;\r
int i;\r
- \r
+ size_t s_tree = 0;\r
+ long s_text = 0;\r
+ size_t s_tags = 0;\r
+\r
// first load the tree topology\r
sprintf(buffer, "%s.srx", filename);\r
fp = fopen(buffer, "r");\r
XML_Tree->Par = (bp *)umalloc(sizeof(bp));\r
\r
loadTree(XML_Tree->Par, fp); \r
- \r
+\r
+ s_tree += sizeof(bp);\r
+\r
// stores the table with tag names\r
ufread(&XML_Tree->ntagnames, sizeof(int), 1, fp);\r
+ \r
+ s_tree += sizeof(int);\r
+\r
XML_Tree->TagName = (unsigned char **)umalloc(XML_Tree->ntagnames*sizeof(unsigned char *));\r
+ \r
+ s_tags += sizeof(unsigned char*)*XML_Tree->ntagnames;\r
+\r
\r
for (i=0; i<XML_Tree->ntagnames;i++) {\r
\r
int len = strlen((const char*)buffer);\r
XML_Tree->TagName[i] = (unsigned char *)ucalloc(len,sizeof(char));\r
strncpy((char *)XML_Tree->TagName[i], (const char *)buffer,len - 1);\r
+ s_tags+= len*sizeof(char);\r
}\r
\r
// loads the flags\r
ufread(&(XML_Tree->initialized), sizeof(bool), 1, fp);\r
ufread(&(XML_Tree->finished), sizeof(bool), 1, fp);\r
ufread(&(XML_Tree->disable_tc), sizeof(bool), 1, fp);\r
+ \r
+ s_tree+=sizeof(bool)*4;\r
\r
if (!(XML_Tree->indexing_empty_texts)) XML_Tree->EBVector = static_bitsequence_rrr02::load(fp);\r
-\r
+ \r
+ s_tree+= XML_Tree->EBVector->size();\r
+ \r
// loads the tags\r
XML_Tree->Tags = static_sequence::load(fp);\r
+ s_tree+= XML_Tree->Tags->size();\r
+\r
+ s_text = ftell(fp);\r
\r
// loads the texts\r
if (!XML_Tree->disable_tc){\r
else\r
XML_Tree->Text = NULL;\r
\r
+ s_text = ftell(fp) - s_text;\r
fclose(fp);\r
+\r
+ std::cerr << "Tree part is " << s_tree/1024 << " Kbytes,\n"\r
+ << "with node->tagid part " << XML_Tree->Tags->size()/1024 << "Kbytes \n"\r
+ << "size of Tag part : " << XML_Tree->Tags->length () << " elements\n"\r
+ << "sizof(unsigned int)* " << XML_Tree->Tags->length () << " = " << \r
+ sizeof(unsigned int) * XML_Tree->Tags->length () / 1024 << " Kbytes\n"\r
+ << "Tag part is " << s_tags/1024 << " Kbytes,\n"\r
+ << "Text collection is " << s_text/1024 << " Kbytes \n";\r
return XML_Tree;\r
}\r
\r
if (d == NULLT)\r
return NULLT;\r
\r
- int s = d;\r
- // Kim : I added the d+1. before that, else was select1(d)\r
- // and gave wrong results but I'm really poking a dead bear with a stick here.\r
+ int s;\r
+ // OJO : Kim : I added the d+1. before that, else branch was \r
+ // EBVector->select1(d)\r
+ // and gave wrong results (I'm really poking a bear with a stick here).\r
if (indexing_empty_texts) s = d;\r
else s = EBVector->select1(d+1);\r
\r