⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printsta.c

📁 R+树的c实现源码
💻 C
字号:
#include <stdio.h>#include "assert.h"#include "macros.h"#include "options.h"#include "index.h"#include "global.h"int     NO_REFIN;InsertStats(){        printf("\n");        printf("rectangles inserted:\t\t%d\n", InsertCount);        printf("splits:\t\t\t\t%d\n", InSplitCount);        if (InSplitCount > 0)                printf("average merit of splits:\t%3.2f\n",                SplitMeritSum / InSplitCount);        if (InsertCount > 0)                printf("splits per insert:\t\t%3.2f\n",                (float)InSplitCount/InsertCount);    /*  printf("partition evaluations:\t\t%d\n", EvalCount);    **  if (InSplitCount > 0)    **  {    **          printf("evaluations per split:\t\t%3.2f\n",    **          (float)EvalCount / InSplitCount);    **  }    */        if (CallCount > 0 && InSplitCount > 0)        {                printf("recursive calls per split:\t%d\n",                CallCount / InSplitCount);        }    /*  if (InsertCount > 0)    **  {    **          printf("evaluations per insert:\t\t%3.2f\n",    **          (float)EvalCount / InsertCount);    **  }    */        if (InsertCount > 0)        {                printf("pages touched per insert:\t%3.2f\n",                (float)InTouchCount / InsertCount);        }        printf("# of downward splits:\t\t%d\n", DownwardSplitCount);        if (InSplitCount > 0)                printf("average downward splits per split:\t%3.2f\n",                (float) DownwardSplitCount / InSplitCount);        if (InsertCount > 0)                printf("average downward splits per insert:\t%3.2f\n",                (float)DownwardSplitCount / InsertCount);        printf("cpu time:\t\t\t%f\n", UserTime + SystemTime);        if (InsertCount > 0)                printf("cpu time per insert:\t\t%f\n",                        (UserTime+SystemTime) / InsertCount);        if (InSplitCount > 0)                printf("cpu time per split:\t\t%f\n",                        (UserTime+SystemTime) / InSplitCount);        TreeStats();}SearchStats(){        float fraction;        printf("\n");        printf("searches:\t\t\t\t%d\n", SearchCount);        printf("qualifying rects:\t\t\t%d\n", HitCount);	printf("qualifying rects (no refinement):\t%d\n", NO_REFIN);        if (SearchCount > 0)                printf("avg hits per search:\t\t\t%3.2f\n", (float)HitCount / SearchCount);        if (RectCount*SearchCount > 0)        {                fraction = (float)HitCount / (RectCount * SearchCount);                printf("avg fraction of data each search:\t%d%%\n",                        (int)(100*fraction+0.5));        }        if (SearchCount > 0)                printf("pages touched per search:\t\t%3.2f\n",                (float)SeTouchCount / SearchCount);        if (HitCount > 0)        {                printf("pages touched per hit:\t\t\t%3.2f\n",                (float)SeTouchCount / HitCount);        }        printf("cpu time:\t\t\t\t%f\n", UserTime + SystemTime);        if (SearchCount > 0)                printf("cpu time per search:\t\t\t%f\n",                        (UserTime+SystemTime) / SearchCount);        if (HitCount > 0)                printf("cpu time per hit:\t\t\t%f\n", (UserTime+SystemTime) / HitCount);}DeleteStats(){        printf("\n");        printf("rectangles deleted:\t\t%d\n", DeleteCount);    /*  printf("nodes eliminated:\t\t%d\n", ElimCount);    **  if (DeleteCount > 0)    **          printf("nodes eliminated per delete:\t%3.3f\n",    **                  (float)ElimCount / DeleteCount);    **  printf("nodes reinserted:\t\t%d\n", ReInsertCount);    **  if (ElimCount > 0)    **          printf("reinsertions per node elim:\t%3.2f\n",    **          (float)ReInsertCount / ElimCount);    **  if (DeleteCount > 0)    **          printf("reinsertions per rect delete:\t%3.3f\n",    **          (float)ReInsertCount / DeleteCount);    **  printf("node splits from reinsertions:\t%d\n", DeSplitCount);    */        if (DeleteCount > 0)        {                printf("pages touched per delete:\t%3.2f\n",                (float)DeTouchCount / DeleteCount);        }        printf("cpu time:\t\t\t%f\n", UserTime + SystemTime);        if (DeleteCount > 0)                printf("cpu time per delete:\t\t%f\n",                        (UserTime+SystemTime) / DeleteCount);}GeneralStats(){        printf("\n");        printf("bytes per page:\t\t\t%d\n", PAGESIZE);        printf("dimensions:\t\t\t%d\n", NUMDIMS);        printf("entries per node:\t\t%d\n", NODECARD);}TreeStats(){        assert(RectCount >= 0);        printf("\n");        printf("rectangles indexed:\t\t%d\n", RectCount);        printf("levels in tree:\t\t\t%d\n", Root->level + 1);        printf("nodes in tree:\t\t\t%d\n", NodeCount);        printf("leaf nodes:\t\t\t%d\n", LeafCount);        printf("non-leaf nodes:\t\t\t%d\n", NonLeafCount);        if (RectCount > 0)                printf("index nodes per data item:\t%3.2f\n",                        (float)NodeCount / RectCount);        printf("size of index in bytes:\t\t%d\n", NodeCount * PAGESIZE);        if (RectCount > 0)                printf("index bytes per data item:\t%3.2f\n",                        (float)(NodeCount * PAGESIZE) / RectCount);        printf("total entries:\t\t\t%d\n", EntryCount);        printf("total slots for entries:\t%d\n", NodeCount*NODECARD);        if (NodeCount > 0)                printf("space utilization:\t\t%d%%\n",                        (int)(100*(float)EntryCount/(NodeCount*NODECARD)));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -