<重构>中有这样一句话:我们的第一个解决方法是将12000bytes的字符串缓冲(cache)起来,这可解决一大半难题。然后我们又加以修改,将它直接写入一个flie stream,从而避免产生字符串。
====================================请问,写入file stream的性能比存储到一个字符串中要好吗?为什么?

解决方案 »

  1.   

    用stringBuilder吧,只要长度在1K以上,StringBuilder比string快好多
      

  2.   

    file stream是不是就是内存得一个缓冲区啊
      

  3.   

    FileStream会利用到内存缓存,专门还有一个MemoryStream完全是内存缓存
      

  4.   

    FileStream 只是把文件当成流来进行操作
    也就是文件的一层封装.只是用了一定的内存来进行缓冲来提高性能.
      

  5.   

    String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类
      

  6.   

    如果这个字符串是要写到文件中去的,那么就可以让它一直在缓冲区里面呆着,而不要转换成为字符串,因为字符串->Stream和构建字符串都是比较耗占资源的,虽然Stream比string更占资源,但是你迟早是要写到Stream中去的话,就可以省掉Stream->string->Stream的过程。
      

  7.   

    另,12000bytes不算什么。不就是12K么。
      

  8.   

    谁能说说File与FileInfo的区别??
      

  9.   

    File 是抽象类,FileInfo 是继承类
    如果比较少的操作,使用 File 完全可以。如果关于一个文件的操作内容比较多,用 FileInfo 实例化一下,性能更好