客户端总是已4K左右大小随机读服务器上的一个很大的文件,目前是用多线程的方法,发现速度很慢 而且服务资源占用太高,如何做可以提高性能并且CPU占用又较少?

解决方案 »

  1.   

    你可以在服务器上开n个4k的缓存。把客户端最近读过的n个缓存起来,设计一个缓存算法。一般来说可以提高性能。
      

  2.   

    缓存是个办法,但是毕竟数据太大 而内存又太小 容量有限
    我用VC随即读写这个文件发现速度只有7M/S 所以能不能在读写本身做文章?
      

  3.   

    读写本身好像没啥好办法。我觉得多线程来读一个文件可能反而会损失性能。我建议你用完成端口模式来读写文件(OVERLAPPED),同时发起多个READFILE / WRITEFILE 可以保证尽可能高的磁盘性能。另外还可以在硬件本身想办法,例如 RAID 0.
      

  4.   

    如果是但用户访问的话 直接读是最快的,如果使用完成端口反而相应会慢些。
    为了多用户性能,我还是使用完成端口,但是这个速度可就太慢了,为什么WINDOWS复制文件的速度要快很多,不光是因为块大的原因吧。