一、非DIO
1.tools.c
#include <time.h>
#include <sys/timeb.h>
#include "tools.h"
void wrtFile(char * filename, char * list, int count)
{
int writefd = -1;
int i;
time_t writeltime1, writeltime2;
struct timeb writetimebuffer1, writetimebuffer2;
// before write, record time
time (&writeltime1);
ftime ( &writetimebuffer1 );
if ( -1 != ( writefd = open( filename, O_WRONLY|O_CREAT) ) )
{
write( writefd, list, count );
close(writefd);
}
else
{
printf( "error writting file!" );
}
// after writefile, record time
time (&writeltime2);
ftime ( &writetimebuffer2 );
printf("write");
showTimespanSpeed(writeltime1, writeltime2, writetimebuffer1.millitm, writetimebuffer2.millitm);
//sleep(SLEEPTIME);
}
void rdFile(char * filename, char * list, int count)
{
int readfd = -1;
int i;
time_t readltime1, readltime2;
struct timeb readtimebuffer1, readtimebuffer2;
// before read, record time
time (&readltime1);
ftime ( &readtimebuffer1 );
if( -1 != ( readfd = open( filename, O_RDONLY) ) )
{
int readsize = read( readfd, list, count);
printf("rdsize:%dM/n", readsize / 1000 / 1000);
close(readfd);
}
else
{
printf( "Error opening file!/n");
}
// after readfile, record time
time (&readltime2);
ftime ( &readtimebuffer2 );
printf("read");
showTimespanSpeed(readltime1, readltime2, readtimebuffer1.millitm, readtimebuffer2.millitm);
//sleep(SLEEPTIME);
}
void delFile ( int filenum )
{
char name[50];
time_t delltime1, delltime2;
struct timeb deltimebuffer1, deltimebuffer2;
// before del, record time
time (&delltime1);
ftime ( &deltimebuffer1 );
int i;
for ( i = 0; i < filenum; i++ )
{
char pathname[100] = "./filedir";
sprintf( name, "%d", i);
strcat( pathname, "/");
strcat( pathname, name );
unlink( pathname );
}
// after delfile, record time
time (&delltime2);
ftime ( &deltimebuffer2 );
printf("del");
showTimespanSpeed(delltime1, delltime2, deltimebuffer1.millitm, deltimebuffer2.millitm);
//sleep(SLEEPTIME);
}
void showTimespanSpeed(int second1, int second2, int millisecond1, int millisecond2)
{
printf("second1:%d,second2:%d,millisecond1:%d,millisecond2:%d/n", second1, second2, millisecond1, millisecond2 );
int secondspan = second2 - second1;
int millisecondspan = (1000 * secondspan) + millisecond2 - millisecond1;
int speed = FILESIZEINBYTE / 1000 / millisecondspan;
printf( "speed:%dM/s, millisecondspan:%dms/n", speed, millisecondspan );
}
void *thread1( ThreadInput *ti)
{
char pathname[100] = "./wrtfiledir";
char name[50] = "file1";
strcat( pathname, "/");
strcat( pathnam