今天學長讓我幫他寫一個程序,1s內創建一個10 Gb的文件,(他是做大數據的)。我剛剛開始用一般的做法,那是相當浪費時間,後來從網上找了半天,看到了一個貌似很有希望的程序,但是我也不是很懂,這裡我只是給大家看看程序,我也不知道創建這麼大的文件有什麼用!
其實這裡就是區別fputc與fwrite這兩個函數,兩者所用時間有很大差別!
用fputc執行效果:(1G大概用了30s吧)
圖1 fputc執行效果
fwrite執行效果:
圖2 fwrite執行效果
可以看出,fwrite基本上是立即執行完!
#include#include #include #include #pragma comment( lib,"winmm.lib" ) void main() { unsigned long i, block,filesize; char type; FILE *fd; char filename[64]; fpos_t pos; DWORD s_time,p_time; printf("Input your file name:"); scanf("%s",filename); fd = fopen(filename,"wb+"); if(fd == NULL) { perror("Create file Fail:"); return ; } setsize: printf("Input file size:"); scanf("%d%c",&filesize,&type); s_time = clock(); fgetpos (fd,&pos); switch(type) { case 'K': case 'k':block = 0x400; break; case 'M': case 'm':block = 0x100000;break; case 'G': case 'g': block = 0x40000000; for(i=0; i