#include #include #include #include #include #include #include int verbose = 0; void v(char *fmt, ...) { va_list ap; if (!verbose) return; va_start(ap, fmt); vfprintf(stdout, fmt, ap); va_end(ap); } #define TSIZE (1024 * 1024 * 16) unsigned long start_tic; void start(FILE *f) { fseek(f, 0, SEEK_SET); start_tic = GetTickCount(); } void end() { unsigned long end_tic = GetTickCount(); printf("%6ld", end_tic - start_tic); } void test(int linesz, int cr) { FILE *f = fopen("iospeed.dat", "wb"); char buf[65536]; int i, fd; memset(buf, 'x', linesz); buf[linesz-1] = '\n'; if (cr) buf[linesz-2] = '\r'; for (i=0; i 0); end(); start(f); while (fgets(buf, 64436, f)); end(); f = fopen("iospeed.dat", "rb"); fd = fileno(f); for (i=0; i 0); end(); start(f); while (fgets(buf, 64436, f)); end(); printf("\n"); } int main(int argc, char **argv) { if (argc > 1 && strcmp(argv[1],"-v") == 0) verbose = 1; setbuf(stdout, 0); printf(" ----- text ----- ---- binary ----\n"); printf("linesz cr getc fread fgets getc fread fgets\n"); test(4, 0); test(64, 0); test(4096, 0); test(4, 1); test(64, 1); test(4096, 1); remove ("iospeed.dat"); return 0; }