//-------------------------------------------------------------------*--------* // Test of DOL on the same doubly-linked list. // Jiri Soukup, Aug.11, 2004 //-------------------------------------------------------------------*--------* #include #include #define ZZmain #include "zzincl.h" class ListNode { int id; public: ListNode(){id= -1;} ListNode(int i){id=i;} ZZ_EXT_ListNode }; class List { int count; public: List(){count=0;} int getCount(){return count;} ZZ_EXT_List }; ZZ_HYPER_DOUBLE_COLLECT(list,List,ListNode); ZZ_HYPER_UTILITIES(util); #define ELAPSED int(time(NULL)-start) #define RESET start=time(NULL) int main(int argc,char **argv) { List *root; ListNode *n; FILE *fp; int i,firstRun,NUM; time_t start,start0; char *v[1],*t[1]; list_iterator it; if(argc!=2){ printf("syntax: list numOfNodes\n"); return 1; } NUM=atoi(argv[1]); printf("opening database "); RESET; start0=start; util.mode(0,0,0,0); // invoke memory blasting util.blkAlloc(200000000,15); // total storage<20MB, page=2**15=8*4096 // same limit as for POST++ fp=fopen("list.dol","rw"); if(fp){firstRun=0; fclose(fp);} else firstRun=1; if(!firstRun){ // open the database util.open("list.dol",1,v,t); root=(List*)(v[0]); printf("%d sec\ncount=",ELAPSED); RESET; i=0; it.start(root); ITERATE(it,n){ i++; } printf("%d in %d sec\n",i,ELAPSED); RESET; } else { printf("%d sec\ncreating list of %d nodes ",ELAPSED,NUM); root=new List(); i=0; for(i=0; i