最近我想写一个关于文件操作的程序(复制,剪切,粘贴),因为我想实时的得到文件操作的进度,所以我准备用文件读写函数来处理文件的复制等。那么就必定要申请缓冲区,先读取一段数据,然后把数据写到新文件中。
刚开始的时候我天真地以为缓冲区的大小是无所谓的,因为缓冲区小的时候,处理器所处理的时间短,在相同的时间里,重复的次数多;当缓冲区大的时候,处理的时间虽然比较长,但是每次处理的数据多了,所以我认为缓冲区的大小无所谓。
但是在我测试的时候却不是这样,申请的缓冲区太小或太大都会影响速度。不知道为什么?
还有应该怎么确定一个合适的缓冲区?谢谢!!!!!!

解决方案 »

  1.   

    一般情况下,缓冲区只要不小于1MB就可以。如果对性能要求很高,可以考虑用文件映射、禁用缓冲、异步I/O或多线程等方式;如果要求更高就要绕过文件系统直接访问硬盘了。
      

  2.   

    文件I/O操作是读写文件等中比较耗时的,所以缓冲太小,造成I/O次数过多,效率就会有影响了...
      

  3.   

    文件操作如无特殊要求用操作系统提供的API就可以了,比如CopyFileEx函数就提供了回调函数可以监控操作的进度。