--- ab.c-share_statistics-7 2008-07-07 18:00:00.000000000 +0200
+++ ab.c-html_conf_perc-8 2008-07-07 18:00:05.000000000 +0200
@@ -1184,12 +1184,52 @@
(double) (totalread + totalposted) / 1024 / timetaken);
}
}
- {
- if (done > 0) { /* avoid division by zero (if 0 done) */
- basic_stats_t *r = calculate_basic_results();
- printf("
Connection Times (ms) |
\n",
- trstring, tdstring);
+ if (done > 0) { /* avoid division by zero (if 0 done) */
+ int i;
+ basic_stats_t *r = calculate_basic_results();
+
+ printf("Connection Times (ms) |
\n",
+ trstring, tdstring);
+ if (confidence) {
+ confidence_stats_t *s = calculate_confidence_results(r);
+ printf(" | min | mean | +/-sd | median | max |
\n",
+ trstring, tdstring, tdstring, tdstring, tdstring, tdstring, tdstring);
+#define CONF_FMT_STRING "%5" APR_TIME_T_FMT " | %4" APR_TIME_T_FMT " | %5.1f | %6" APR_TIME_T_FMT " | %7" APR_TIME_T_FMT " | \n"
+ printf("Connect: | " CONF_FMT_STRING,
+ trstring, tdstring, tdstring, r->mincon, tdstring, r->meancon,
+ tdstring, s->sdcon, tdstring, s->mediancon, tdstring, r->maxcon);
+ printf("
---|
Processing: | " CONF_FMT_STRING,
+ trstring, tdstring, tdstring, r->mind, tdstring, r->meand,
+ tdstring, s->sdd, tdstring, s->mediand, tdstring, r->maxd);
+ printf("
---|
Waiting: | " CONF_FMT_STRING,
+ trstring, tdstring, tdstring, r->minwait, tdstring, r->meanwait,
+ tdstring, s->sdwait, tdstring, s->medianwait, tdstring, r->maxwait);
+ printf("
---|
Total: | " CONF_FMT_STRING,
+ trstring, tdstring, tdstring, r->mintot, tdstring, r->meantot,
+ tdstring, s->sdtot, tdstring, s->mediantot, tdstring, r->maxtot);
+#undef CONF_FMT_STRING
+
+#define SANE(what,mean,median,sd) \
+ { \
+ double d = (double)mean - median; \
+ if (d < 0) d = -d; \
+ if (d > 2 * sd ) \
+ printf("
---|
%s |
\n", \
+ trstring, tdstring, "ERROR: The median and mean for " what " are more than twice the standard " \
+ "deviation apart. These results are NOT reliable."); \
+ else if (d > sd ) \
+ printf("%s |
\n", \
+ trstring, tdstring, "WARNING: The median and mean for " what " are not within a normal deviation " \
+ "These results are probably not that reliable."); \
+ }
+ SANE("the initial connection time", r->meancon, s->mediancon, s->sdcon);
+ SANE("the processing time", r->meand, s->mediand, s->sdd);
+ SANE("the waiting time", r->meanwait, s->medianwait, s->sdwait);
+ SANE("the total time", r->meantot, s->mediantot, s->sdtot);
+#undef SANE
+ }
+ else {
printf(" | min | avg | max |
\n",
trstring, tdstring, tdstring, tdstring, tdstring);
#define CONF_FMT_STRING "%5" APR_TIME_T_FMT " | %5" APR_TIME_T_FMT " | %5" APR_TIME_T_FMT " | \n"
@@ -1203,6 +1243,29 @@
trstring, tdstring, tdstring, r->mintot, tdstring, r->meantot, tdstring, r->maxtot);
#undef CONF_FMT_STRING
}
+
+ if (!confidence) {
+ qsort(stats, done, sizeof(struct data),
+ (int (*) (const void *, const void *)) comprando);
+ }
+
+ /* Sorted on total connect times */
+ if (percentile && (done > 1)) {
+ printf("%s |
\n",
+ trstring, tdstring, "Percentage of the requests served within a certain time (ms)");
+ for (i = 0; i < sizeof(percs) / sizeof(int); i++) {
+ if (percs[i] <= 0)
+ printf("0%%: | <0>(never) |
\n",
+ trstring, tdstring, tdstring);
+ else if (percs[i] >= 100)
+ printf("100%%: | %5" APR_TIME_T_FMT " (longest request) |
\n",
+ trstring, tdstring, tdstring, ap_round_ms(stats[done - 1].time));
+ else
+ printf("%d%%: | %5" APR_TIME_T_FMT "\n",
+ trstring, tdstring, percs[i], tdstring, ap_round_ms(stats[(int) (done * percs[i] / 100)].time));
+ }
+ }
+
printf("\n");
if (csvperc) {
|
---|