* Sebastian Hammer, Adam Dickmeiss
*
* $Log: invstat.c,v $
- * Revision 1.6 1998-03-06 13:54:02 adam
+ * Revision 1.7 1998-03-13 15:30:50 adam
+ * New functions isc_block_used and isc_block_size. Fixed 'leak'
+ * in isc_alloc_block.
+ *
+ * Revision 1.6 1998/03/06 13:54:02 adam
* Fixed two nasty bugs in isc_merge.
*
* Revision 1.5 1997/09/17 12:19:13 adam
struct inv_stat_info {
ISAM isam;
ISAMC isamc;
+ int no_isam_entries[8];
int no_dict_entries;
int no_dict_bytes;
int isam_bounds[20];
static int inv_stat_handle (char *name, const char *info, int pos,
void *client)
{
- int occur;
+ int occur = 0;
int i = 0;
struct inv_stat_info *stat_info = (struct inv_stat_info*) client;
ISAM_P isam_p;
pp = isc_pp_open (stat_info->isamc, isam_p);
occur = isc_pp_num (pp);
-#if 1
while (isc_pp_read(pp, buf))
occurx++;
assert (occurx == occur);
-#endif
+ stat_info->no_isam_entries[isc_type(isam_p)] += occur;
isc_pp_close (pp);
}
while (occur > stat_info->isam_bounds[i] && stat_info->isam_bounds[i])
i++;
++(stat_info->isam_occurrences[i]);
-
return 0;
}
}
records = rec_open (bfs, 0);
+ for (i = 0; i<8; i++)
+ stat_info.no_isam_entries[i] = 0;
stat_info.no_dict_entries = 0;
stat_info.no_dict_bytes = 0;
stat_info.isam = isam;
stat_info.isam_bounds[0] = 1;
stat_info.isam_bounds[1] = 2;
stat_info.isam_bounds[2] = 3;
- stat_info.isam_bounds[3] = 5;
+ stat_info.isam_bounds[3] = 6;
stat_info.isam_bounds[4] = 10;
stat_info.isam_bounds[5] = 20;
stat_info.isam_bounds[6] = 30;
dict_scan (dict, term_dict, &before, &after, &stat_info, inv_stat_handle);
- rec_close (&records);
- dict_close (dict);
- if (isam)
- is_close (isam);
if (isamc)
- isc_close (isamc);
-
- fprintf (stderr, "%d dictionary entries. %d bytes for strings\n",
+ {
+ fprintf (stderr, " Blocks Occur Size KB Bytes/Entry\n");
+ for (i = 0; isc_block_used (isamc, i) >= 0; i++)
+ {
+ fprintf (stderr, " %8d %8d", isc_block_used (isamc, i),
+ stat_info.no_isam_entries[i]);
+
+ if (stat_info.no_isam_entries[i])
+ fprintf (stderr, " %8d %f",
+ (int) ((1023.0 + (double) isc_block_used(isamc, i) *
+ isc_block_size(isamc,i))/1024),
+ ((double) isc_block_used(isamc, i) *
+ isc_block_size(isamc,i))/
+ stat_info.no_isam_entries[i]);
+ fprintf (stderr, "\n");
+ }
+ }
+
+ fprintf (stderr, "\n%d words using %d bytes\n",
stat_info.no_dict_entries, stat_info.no_dict_bytes);
- fprintf (stderr, " size occurrences\n");
+ fprintf (stderr, " Occurrences Words\n");
prev = 1;
for (i = 0; stat_info.isam_bounds[i]; i++)
{
}
fprintf (stderr, "%7d- %7d\n",
prev, stat_info.isam_occurrences[i]);
+
+ rec_close (&records);
+ dict_close (dict);
+
+ if (isam)
+ is_close (isam);
+ if (isamc)
+ isc_close (isamc);
+
}