fossil: import from plan 9
R=rsc https://codereview.appspot.com/7988047
This commit is contained in:
parent
fea86f0639
commit
6f4d00ee45
50 changed files with 22325 additions and 0 deletions
109
src/cmd/fossil/9ping.c
Normal file
109
src/cmd/fossil/9ping.c
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
|
||||
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<n; i++){
|
||||
if(m == OREAD){
|
||||
if(pread(fd, buf, s, 0) < s)
|
||||
sysfatal("bad read: %r");
|
||||
}else{
|
||||
if(pwrite(fd, buf, s, 0) < s)
|
||||
sysfatal("bad write: %r");
|
||||
}
|
||||
t1 = nsec();
|
||||
t[i] = (t1 - t0)*1e-3;
|
||||
t0 = t1;
|
||||
}
|
||||
|
||||
a = 0.;
|
||||
d = 0.;
|
||||
max = 0.;
|
||||
min = 1e12;
|
||||
|
||||
for(i=0; i<n; i++){
|
||||
a += t[i];
|
||||
if(max < t[i])
|
||||
max = t[i];
|
||||
if(min > t[i])
|
||||
min = t[i];
|
||||
}
|
||||
|
||||
a /= n;
|
||||
|
||||
for(i=0; i<n; i++)
|
||||
d += (a - t[i]) * (a - t[i]);
|
||||
d /= n;
|
||||
d = sqrt(d);
|
||||
|
||||
print("avg = %.0fµs min = %.0fµs max = %.0fµs dev = %.0fµs\n", a, min, max, d);
|
||||
|
||||
exits(0);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue