home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
PROG_C
/
SNIP9404.ZIP
/
SPEED.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-04-03
|
4KB
|
156 lines
/******** CALCULATE I/O PERFORMANCE TO NUL FILE ********/
#include <assert.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#define CHK 100 /* speed factor */
long ticks(long tick) /* GET BIOS TIME TICK */
{
union REGS reg;
reg.h.ah=0;
int86(0x1A, ®, ®);
return ((long)reg.x.cx<<16)+reg.x.dx-tick;
}
long time_it(void(*func)(void))
{
long t = ticks(0L);
(*func)();
return ticks(t);
}
void show_it(long t)
{
long lquot, lrem;
t = (t*1000/182+5)/10;
lquot = t/10;
lrem = t%10;
printf("%3ld.%02d sec", lquot, (int)lrem);
}
void t_printf(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wt");
assert(fp != NULL);
for (u=0; u<50*CHK; ++u)
fprintf(fp, "Now is %d time for %d little indians\n", 123, -456);
fclose(fp);
}
void b_printf(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wb");
assert(fp != NULL);
for (u=0; u<50*CHK; ++u)
fprintf(fp, "Now is %d time for %d little indians\n", 123, -456);
fclose(fp);
}
void tu_printf(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wt");
assert(fp != NULL);
setbuf(fp, NULL);
for (u=0; u<5*CHK; ++u)
fprintf(fp, "Now is %d time for %d little indians\n", 123, -456);
fclose(fp);
}
void bu_printf(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wb");
assert(fp != NULL);
setbuf(fp, NULL);
for (u=0; u<5*CHK; ++u)
fprintf(fp, "Now is %d time for %d little indians\n", 123, -456);
fclose(fp);
}
void t_write(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wt");
assert(fp != NULL);
for (u=0; u<250*CHK; ++u)
fwrite("Now is the time for all good men to come\n", 41, 1, fp);
fclose(fp);
}
void b_write(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wb");
assert(fp != NULL);
for (u=0; u<500*CHK; ++u)
fwrite("Now is the time for all good men to come\n", 41, 1, fp);
fclose(fp);
}
void tu_write(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wt");
assert(fp != NULL);
setbuf(fp, NULL);
for (u=0; u<100*CHK; ++u)
fwrite("Now is the time for all good men to come\n", 41, 1, fp);
fclose(fp);
}
void bu_write(void)
{
register FILE *fp;
register unsigned u;
fp = fopen("NUL", "wb");
assert(fp != NULL);
setbuf(fp, NULL);
for (u=0; u<200*CHK; ++u)
fwrite("Now is the time for all good men to come\n", 41, 1, fp);
fclose(fp);
}
main(void)
{
show_it(time_it(t_printf));
printf(": time for text printf buffered\n");
show_it(time_it(b_printf));
printf(": time for binary printf buffered\n");
show_it(time_it(tu_printf));
printf(": time for text printf unbuffered\n");
show_it(time_it(bu_printf));
printf(": time for binary printf unbuffered\n");
show_it(time_it(t_write));
printf(": time for text write buffered\n");
show_it(time_it(b_write));
printf(": time for binary write buffered\n");
show_it(time_it(tu_write));
printf(": time for text write unbuffered\n");
show_it(time_it(bu_write));
printf(": time for binary write unbuffered\n");
return 0;
}