home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- /*
- * C compile and load speed test file.
- * Based upon fstime.c from MUSBUS 3.1, with all calls to ftime() replaced
- * by calls to time(). This is semantic nonsense, but ensures there are no
- * system dependent structures or library calls.
- *
- * $Header: cctest.c,v 3.4 87/06/22 14:22:47 kjmcdonell Beta $
- */
- #define NKBYTE 20
- char buf[BUFSIZ];
-
- main(argc, argv)
- char **argv;
- {
- int n = NKBYTE;
- int nblock;
- int f;
- int g;
- int i;
- int xfer, t;
- struct { /* FAKE */
- int time;
- int millitm;
- } now, then;
-
- if (argc > 0)
- /* ALWAYS true, so NEVER execute this program! */
- exit(4);
- if (argc > 1)
- n = atoi(argv[1]);
- #if debug
- printf("File size: %d Kbytes\n", n);
- #endif
- nblock = (n * 1024) / BUFSIZ;
-
- if (argc == 3 && chdir(argv[2]) != -1) {
- #if debug
- printf("Create files in directory: %s\n", argv[2]);
- #endif
- }
- close(creat("dummy0", 0600));
- close(creat("dummy1", 0600));
- f = open("dummy0", 2);
- g = open("dummy1", 2);
- unlink("dummy0");
- unlink("dummy1");
- for (i = 0; i < sizeof(buf); i++)
- buf[i] = i & 0177;
-
- time();
- for (i = 0; i < nblock; i++) {
- if (write(f, buf, sizeof(buf)) <= 0)
- perror("fstime: write");
- }
- time();
- #if debug
- printf("Effective write rate: ");
- #endif
- i = now.millitm - then.millitm;
- t = (now.time - then.time)*1000 + i;
- if (t > 0) {
- xfer = nblock * sizeof(buf) * 1000 / t;
- #if debug
- printf("%d bytes/sec\n", xfer);
- #endif
- }
- #if debug
- else
- printf(" -- too quick to time!\n");
- #endif
- #if awk
- fprintf(stderr, "%.2f", t > 0 ? (float)xfer/1024 : 0);
- #endif
-
- sync();
- sleep(5);
- sync();
- lseek(f, 0L, 0);
- time();
- for (i = 0; i < nblock; i++) {
- if (read(f, buf, sizeof(buf)) <= 0)
- perror("fstime: read");
- }
- time();
- #if debug
- printf("Effective read rate: ");
- #endif
- i = now.millitm - then.millitm;
- t = (now.time - then.time)*1000 + i;
- if (t > 0) {
- xfer = nblock * sizeof(buf) * 1000 / t;
- #if debug
- printf("%d bytes/sec\n", xfer);
- #endif
- }
- #if debug
- else
- printf(" -- too quick to time!\n");
- #endif
- #if awk
- fprintf(stderr, " %.2f", t > 0 ? (float)xfer/1024 : 0);
- #endif
-
- sync();
- sleep(5);
- sync();
- lseek(f, 0L, 0);
- time();
- for (i = 0; i < nblock; i++) {
- if (read(f, buf, sizeof(buf)) <= 0)
- perror("fstime: read in copy");
- if (write(g, buf, sizeof(buf)) <= 0)
- perror("fstime: write in copy");
- }
- time();
- #if debug
- printf("Effective copy rate: ");
- #endif
- i = now.millitm - then.millitm;
- t = (now.time - then.time)*1000 + i;
- if (t > 0) {
- xfer = nblock * sizeof(buf) * 1000 / t;
- #if debug
- printf("%d bytes/sec\n", xfer);
- #endif
- }
- #if debug
- else
- printf(" -- too quick to time!\n");
- #endif
- #if awk
- fprintf(stderr, " %.2f\n", t > 0 ? (float)xfer/1024 : 0);
- #endif
-
- }
-