广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    同时对多个文件进行大量写操作对性能优化

    2018-05-04 21:21:09 次阅读 稿源:互联网
    零七广告

      我自己的一个项目,需要同时对65536个文件进行多次写操作。

      如果先全部打开所有的文件,然后重复写,最后关闭所有的文件。那么第一次写操作全部完成需要16分钟左右,而第二次就需要40分钟了。没有继续测试了。

      
                  for (int i = 0; i < 65536; i++)
                  {
                      fileStream[i] = new FileStream(buffDir+""+ i.ToString() + ".dat", FileMode.Create,FileAccess.Write, FileShare.Write,14000);
                  }
                   write;
                      write;
                      write;
                      ........
                     for (int i = 0; i < 65536; i++)
                  {
                      fileStream[i] .close();
                  }

       

      
      如果在写操作的时候只打开相应的一个文件,写完关闭。那么所有写操作完成只要2分30秒左右。

      
      循环
      {
         for (int i=0;i<65536;i++)
      {
        open;
        write;
        close;
      }
      }

      
      由此可见,第二种办法性能要远大于第一种。一次打开所有的文件,需要占用不小的内存,最主要的是.net在处理filestream 的时候,可能要进行大量的内存分配和回收等工作,消耗了大量内存和资源。

      另外我也做个测试,如果文件数目比较小,那么第一种的性能又要大大好于第二种。

      
      http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告