16 static int tsize = 1000 * 1048576;
17 static const char* path = "/tmp/wt.dat";
18 static char buf[65536];
20 static uint64_t now(void) {
23 if (gettimeofday(&tv, NULL))
26 return tv.tv_sec * 1000000ULL + tv.tv_usec;
29 static void writetest(int size, size_t bsize)
36 assert(bsize <= sizeof buf);
38 int fd = open(path, O_CREAT|O_WRONLY, 0644);
40 perror("open failed");
46 for (i = 0; i < size; i += bsize) {
47 int rv = write(fd, buf, bsize);
49 perror("write failed");
65 elapsed = (end - start) / 1e6;
66 mbps = ((tsize/elapsed)) / 1048576;
68 fprintf(stderr, "Wrote %d bytes in %03fs using %ld byte buffers: %03f\n", size, elapsed, bsize, mbps);
71 void readtest(int size, size_t bsize)
78 assert(bsize <= sizeof buf);
80 int fd = open(path, O_RDONLY, 0644);
82 perror("open failed");
88 for (i = 0; i < size; i += bsize) {
89 int rv = read(fd, buf, bsize);
91 perror("write failed");
98 elapsed = (end - start) / 1e6;
99 mbps = ((tsize/elapsed)) / 1048576;
101 fprintf(stderr, "Read %d bytes in %03fs using %ld byte buffers: %03fmB/s\n", size, elapsed, bsize, mbps);
108 int main(int argc, char** argv)
111 int bsizes[] = {1024, 4096, 8192, 16384, 32768, 65536, 0};
113 if (argc > 1) path = argv[1];
115 for (i = 0; bsizes[i] != 0; i++) {
116 writetest(tsize, bsizes[i]);
118 for (i = 0; bsizes[i] != 0; i++) {
119 readtest(tsize, bsizes[i]);