// sparksandflames.com #define PI 3.14159265358979323846 #define MAXCMD 1024 #define MAXVARNAME 32 #ifdef __GNUC__ #define FD_SETSIZE (1024) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define DELIMITER "/" #define min(x,y) (xy?x:y) #define O_BINARY 0 #include #include #include #include #include #include #include #define closesocket close #define winsockerr strerror #define WSAGetLastError() errno #define stricmp strcasecmp #else #define FD_SETSIZE 1024 #include #include #include #include #include #include #include #define DELIMITER "\\" #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #define MEGABYTE (1024*1024) int main(int argc, char *argv[]); char buf[MEGABYTE]; // WRITE A BIG FILE AND TIME IT // FILE MUST BE SIGNIFICANTLY LARGER THAN DISKCONTROLLER CACHE SIZE // AND MOTHERBOARD RAM SIZE TO BE A MEANINGFUL TEST int main(int argc, char *argv[]) { int i,handle; time_t wallstart,wallend; double sizework,timework; char *filename = "diskwrite.tmp"; // DEFAULT WRITE SIZE = 4 GIGABYTES int megabytes = 1024 * 4; // PARAMETER 1 OVER RIDES DEFAULT if (argc == 2) { megabytes = atoi(argv[1]); if (megabytes < 1) { printf("diskwrite('%d'): Megabytes to write must be greater than 1.\n",megabytes); return 0; } } printf("Writing %d megabytes\n",megabytes); // START TIMER wallstart = time(NULL); // OPEN FILE handle = open(filename,O_BINARY|O_CREAT|O_WRONLY|O_TRUNC,S_IRUSR|S_IWUSR|S_IROTH|S_IWOTH|S_IRGRP); if (handle == -1) { printf("open('%s'): #%d. %s\n",filename,errno,strerror(errno)); return 0; } // WRITE IT memset(buf,0,MEGABYTE); for (i=0;i 0.00) printf("Write speed.: %.2f Megabytes / Second\n",sizework/timework); // REMOVE WORK FILE if (remove(filename) != 0) { printf("remove('%s'): #%d. %s\n",filename,errno,strerror(errno)); return 0; } return 0; }