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

📄 bench.c

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 C
📖 第 1 页 / 共 2 页
字号:
  the_stats->datatime = text_to_timeval(strtok((char *)NULL, "\t"));    the_stats->totalpages = (unsigned long) text_to_double(strtok((char *)NULL, "\t"));    the_stats->total_num_of_files = (unsigned int) text_to_double(strtok((char *)NULL, "\t"));    for (i = 0; i < number_of_pages; i++)     {         the_stats->page_numbers[i] = (unsigned int) text_to_double(strtok((char *)NULL, "\t"));    }  /* return bytes read */  D_PRINTF( "Returning stats\n");  return(the_stats);} /* end text_to_stats */char * stats_to_text(const stats_t *the_stats) {  int    i;  THREAD static char  stats_as_text[SIZEOF_STATSTEXT];  char  *tmpbuf;  rqst_stats_t the_rqst_stats;  *stats_as_text = 0;  /* stats.rs */  the_rqst_stats = the_stats->rs;  tmpbuf = rqst_stats_to_text(&the_rqst_stats);  strcat(stats_as_text, tmpbuf);  /* main structure */  tmpbuf = timeval_to_text(&(the_stats->starttime));    strcat(stats_as_text, tmpbuf);  tmpbuf = timeval_to_text(&(the_stats->endtime));    strcat(stats_as_text, tmpbuf);    tmpbuf = timeval_to_text(&(the_stats->datatime));    strcat(stats_as_text, tmpbuf);  tmpbuf = double_to_text((the_stats->totalpages));    strcat(stats_as_text, tmpbuf);  tmpbuf = double_to_text((the_stats->total_num_of_files));    strcat(stats_as_text, tmpbuf);  for (i = 0; i < number_of_pages; i++)     {         tmpbuf = double_to_text((the_stats->page_numbers[i]));            strcat(stats_as_text, tmpbuf);    }  strcat(stats_as_text, "\n");  return(stats_as_text);} /* end stats_to_text */page_stats_t *text_to_page_stats(char *page_stats_as_text) {  rqst_stats_t *the_rqst_stats;  THREAD static page_stats_t pagestat;  page_stats_t *pagestats = &pagestat;  /* grab stats.rs */  the_rqst_stats = text_to_rqst_stats(page_stats_as_text);  /* grab main structure */  pagestats->totalpages = (unsigned long) text_to_double(strtok((char *)NULL, "\t")); 			       pagestats->page_size = (unsigned int) text_to_double(strtok((char *)NULL, "\t")); 			       pagestats->page_valid = (int) text_to_double(strtok((char *)NULL, "\t")); 			      pagestats->rs = *the_rqst_stats;  /* return bytes read */  return(pagestats);} /* end text_to_page_stats */char * page_stats_to_text(const page_stats_t *pagestats) {  THREAD static char page_stats_as_text[SIZEOF_PAGESTATSTEXT];  char  *tmpbuf;  rqst_stats_t the_rqst_stats;  *page_stats_as_text = 0;  /* stats.rs */  the_rqst_stats = pagestats->rs;  tmpbuf = rqst_stats_to_text(&the_rqst_stats);  strcat(page_stats_as_text, tmpbuf);  /* main structure */  tmpbuf = double_to_text(pagestats->totalpages);    strcat(page_stats_as_text, tmpbuf);  tmpbuf = double_to_text(pagestats->page_size);    strcat(page_stats_as_text, tmpbuf);  tmpbuf = double_to_text(pagestats->page_valid);     strcat(page_stats_as_text, tmpbuf);  strcat(page_stats_as_text, "\n");  return(page_stats_as_text);} /* end page_stats_to_text */voidrqtimer_init(rqst_timer_t *p) {    memset(p, 0, sizeof(*p));}voidrqstat_init(rqst_stats_t *p) {    memset(p, 0, sizeof(*p));    p->minbytes = DBL_MAX;    p->minbody  = DBL_MAX;    p->minconnecttime.tv_sec = LONG_MAX;    p->minconnecttime.tv_usec = LONG_MAX;    p->minresponsetime.tv_sec = LONG_MAX;    p->minresponsetime.tv_usec = LONG_MAX;}voidstats_init(stats_t *p) {    memset(p, 0, sizeof(*p));    p->rs.minbytes = DBL_MAX;    p->rs.minbody  = DBL_MAX;    p->rs.minconnecttime.tv_sec = LONG_MAX;    p->rs.minconnecttime.tv_usec = LONG_MAX;    p->rs.minresponsetime.tv_sec = LONG_MAX;    p->rs.minresponsetime.tv_usec = LONG_MAX;}voidpage_stats_init(page_stats_t *p) {    memset(p, 0, sizeof(*p));    /* commented out so that unread pages result in       page_stats_as_text buffer overflow    p->rs.minbytes = DBL_MAX;    p->rs.minbody  = DBL_MAX;    p->rs.minconnecttime.tv_sec = LONG_MAX;    p->rs.minconnecttime.tv_usec = LONG_MAX;    p->rs.minresponsetime.tv_sec = LONG_MAX;    p->rs.minresponsetime.tv_usec = LONG_MAX;    */}voidrqstat_times(rqst_stats_t *rs, rqst_timer_t *rt){    double    t;    compdifftime(&(rt->exittime), &(rt->entertime),						 &(rs->totalresponsetime));    t = timevaldouble(&(rs->totalresponsetime));    rs->totalresponsetimesq = t * t;    rs->minresponsetime = rs->totalresponsetime;    rs->maxresponsetime = rs->totalresponsetime;    compdifftime(&(rt->afterconnect), &(rt->beforeconnect),						 &(rs->totalconnecttime));    t = timevaldouble(&(rs->totalconnecttime));    rs->totalconnecttimesq = t * t;    rs->minconnecttime = rs->totalconnecttime;    rs->maxconnecttime = rs->totalconnecttime;    rs->totalbody =   rt->bodybytes;    rs->totalbodysq = ((double)(rt->bodybytes)) * ((double)(rt->bodybytes));    rs->minbody =     rt->bodybytes;    rs->maxbody =     rt->bodybytes;    rs->totalbytes =   rt->totalbytes;    rs->totalbytessq = ((double)(rt->totalbytes)) * ((double)(rt->totalbytes));    rs->minbytes =     rt->totalbytes;    rs->maxbytes =     rt->totalbytes;    rs->totalconnects = 1;    rs->totalerrs = 0;    rs->totalerrortime.tv_sec = 0;    rs->totalerrortime.tv_usec = 0;}voidrqstat_sum(rqst_stats_t *sum, rqst_stats_t *incr){    addtime( &(sum->totalresponsetime),   &(incr->totalresponsetime));    mintime( &(sum->minresponsetime),     &(incr->minresponsetime));    maxtime( &(sum->maxresponsetime),     &(incr->maxresponsetime));    sum->totalresponsetimesq += incr->totalresponsetimesq;    addtime( &(sum->totalconnecttime),    &(incr->totalconnecttime));    mintime( &(sum->minconnecttime),      &(incr->minconnecttime));    maxtime( &(sum->maxconnecttime),      &(incr->maxconnecttime));    sum->totalconnecttimesq += incr->totalconnecttimesq;    sum->totalconnects += incr->totalconnects;    sum->totalerrs     += incr->totalerrs;    addtime( &(sum->totalerrortime), &(incr->totalerrortime));    sum->totalbytes    += incr->totalbytes;    sum->totalbytessq  += incr->totalbytessq;    sum->minbytes      =  min(sum->minbytes, incr->minbytes);    sum->maxbytes      =  max(sum->maxbytes, incr->maxbytes);    sum->totalbody     += incr->totalbody;    sum->totalbodysq   += incr->totalbodysq;    sum->minbody       =  min(sum->minbody, incr->minbody);    sum->maxbody       =  max(sum->maxbody, incr->maxbody);}voidrqstat_print(rqst_stats_t *stats){    rqstat_fprint(stdout, stats);}voidrqstat_fprint(FILE *f, rqst_stats_t *stats){    struct timeval meantime, /*vartime,*/ stdtime;    fprintf(f, "%d connection(s) to server, %d errors\n",	    stats->totalconnects, stats->totalerrs);    if (stats->totalconnects == 0) {	fprintf(f,"NO CONNECTIONS, THEREFORE NO STATISTICS\n"		  "IS YOUR WEBSERVER RUNNING?\n"		  "DO THE PAGES EXIST ON THE SERVER?\n");	return;    }    /* title */    fprintf(f, "\n\t\t\t   Average      Std Dev      Minimum      Maximum\n\n");    /* first line (connect time) */    avgtime(&(stats->totalconnecttime), 				stats->totalconnects, &meantime);    /* variancetime(&(stats->totalconnecttime),				stats->totalconnecttimesq,				stats->totalconnects, &vartime); */    stddevtime(&(stats->totalconnecttime),				stats->totalconnecttimesq,				stats->totalconnects, &stdtime);    fprintf(f, "Connect time (sec) \t%3d.%6.6d   %3d.%6.6d   %3d.%6.6d   %3d.%6.6d\n",				meantime.tv_sec,				meantime.tv_usec,				stdtime.tv_sec,				stdtime.tv_usec,				stats->minconnecttime.tv_sec,				stats->minconnecttime.tv_usec,				stats->maxconnecttime.tv_sec,				stats->maxconnecttime.tv_usec);    /* second line (response time) */    avgtime(&(stats->totalresponsetime), 				stats->totalconnects, &meantime);    /* variancetime(&(stats->totalresponsetime),				stats->totalresponsetimesq,				stats->totalconnects, &vartime); */    stddevtime(&(stats->totalresponsetime),				stats->totalresponsetimesq,				stats->totalconnects, &stdtime);    fprintf(f, "Response time (sec) \t%3d.%6.6d   %3d.%6.6d   %3d.%6.6d   %3d.%6.6d\n",				meantime.tv_sec,				meantime.tv_usec,				stdtime.tv_sec,				stdtime.tv_usec,				stats->minresponsetime.tv_sec,				stats->minresponsetime.tv_usec,				stats->maxresponsetime.tv_sec,				stats->maxresponsetime.tv_usec);    /* 3rd-5th lines (response size, body size, # bytes moved */    fprintf(f, "Response size (bytes) \t%10.0lf   %10.0lf   %10.0lf   %10.0lf\n",	    mean(stats->totalbytes, stats->totalconnects),	    stddev(stats->totalbytes, stats->totalbytessq,			stats->totalconnects),	    stats->minbytes,	    stats->maxbytes);    fprintf(f, "Body size (bytes) \t%10.0lf   %10.0lf   %10.0lf   %10.0lf\n\n",	    mean(stats->totalbody, stats->totalconnects),	    stddev(stats->totalbody, stats->totalbodysq,			stats->totalconnects),	    stats->minbody,	    stats->maxbody);    fprintf(f, "%.0lf body bytes moved + %.0lf header bytes moved = %.0lf total\n",	    stats->totalbody,	    stats->totalbytes - stats->totalbody,	    stats->totalbytes);}

⌨️ 快捷键说明

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