[C语言]1s内创建10G文件

2014-11-23 21:33:55 · 作者: · 浏览: 26

今天学长让我帮他写一个程序,1s内创建一个10 Gb的文件,(他是做大数据的)。我刚刚开始用一般的做法,那是相当浪费时间,后来从网上找了半天,看到了一个貌似很有希望的程序,但是我也不是很懂,这里我只是给大家看看程序,我也不知道创建这么大的文件有什么用!

其实这里就是区别fputc与fwrite这两个函数,两者所用时间有很大差别!

用fputc执行效果:(1G大概用了30s吧)

\

图1 fputc执行效果

fwrite执行效果:

\

图2 fwrite执行效果

可以看出,fwrite基本上是立即执行完!

#include 
  
   
#include <
   windows.h>
#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