#include #include typedef uvlong u64int; #define TWID64 ((u64int)~(u64int)0) u64int unittoull(char *s) { char *es; u64int n; if(s == nil) return TWID64; n = strtoul(s, &es, 0); if(*es == 'k' || *es == 'K'){ n *= 1024; es++; }else if(*es == 'm' || *es == 'M'){ n *= 1024*1024; es++; }else if(*es == 'g' || *es == 'G'){ n *= 1024*1024*1024; es++; } if(*es != '\0') return TWID64; return n; } void main(int argc, char *argv[]) { int fd, i; int n = 1000, m; int s = 1; double *t, t0, t1; uchar *buf; double a, d, max, min; m = OREAD; ARGBEGIN{ case 'n': n = atoi(ARGF()); break; case 's': s = unittoull(ARGF()); if(s < 1 || s > 1024*1024) sysfatal("bad size"); break; case 'r': m = OREAD; break; case 'w': m = OWRITE; break; }ARGEND fd = 0; if(argc == 1){ fd = open(argv[0], m); if(fd < 0) sysfatal("could not open file: %s: %r", argv[0]); } buf = malloc(s); t = malloc(n*sizeof(double)); t0 = nsec(); for(i=0; i t[i]) min = t[i]; } a /= n; for(i=0; i