#include "stdinc.h" | |
enum { | |
Nblock = 300000, | |
BlockSize = 8*1024, | |
}; | |
uchar data[Nblock*VtScoreSize]; | |
int rflag; | |
int nblock = 10000; | |
int perm[Nblock]; | |
void | |
main(int argc, char *argv[]) | |
{ | |
VtSession *z; | |
int i, j, t; | |
int start; | |
uchar buf[BlockSize]; | |
srand(time(0)); | |
ARGBEGIN{ | |
case 'r': | |
rflag++; | |
break; | |
case 'n': | |
nblock = atoi(ARGF()); | |
break; | |
}ARGEND | |
for(i=0; i<nblock; i++) | |
perm[i] = i; | |
if(rflag) { | |
for(i=0; i<nblock; i++) { | |
j = nrand(nblock); | |
t = perm[j]; | |
perm[j] = perm[i]; | |
perm[i] = t; | |
} | |
} | |
if(readn(0, data, VtScoreSize*nblock) < VtScoreSize*nblock) | |
sysfatal("read failed: %r"); | |
vtAttach(); | |
z = vtDial("iolaire2"); | |
if(z == nil) | |
sysfatal("cound not connect to venti"); | |
if(!vtConnect(z, 0)) | |
vtFatal("vtConnect: %s", vtGetError()); | |
print("starting\n"); | |
start = times(0); | |
if(rflag && nblock > 10000) | |
nblock = 10000; | |
for(i=0; i<nblock; i++) { | |
if(vtRead(z, data+perm[i]*VtScoreSize, VtDataType, buf, BlockSize) < 0) | |
vtFatal("vtRead failed: %d: %s", i, vtGetError()); | |
} | |
print("time = %f\n", (times(0) - start)*0.001); | |
vtClose(z); | |
vtDetach(); | |
} |