with fzip do
    begin
      ArchiveFile := zipdir + 'Rpt.zip';
      DateAttribute := daFileDate;
      StoredDirNames := sdRelative;
      RecurseDirs := True;
      ExcludeSpec.Clear();
      FileSpec.Clear();
      FileSpec.Add(AFilePath + AFileName);
      CompressCount := 0;
      CompressCount := Compress();
    end;
其中 fzip:TZip;是线程的私有变量
我不是用多线程 就使用单线程 压缩5000个文件 耗时大约3分钟。
开10个线程后 每个线程压缩大约500左右的文件,每个线程耗时5分钟多。线程使用方面没什么问题。
所有的耗时都花在CompressCount := Compress();这句。

解决方案 »

  1.   

    CompressCount := Compress(); 
    是做什么用的?
      

  2.   

    单线程和多线程的cpu的使用基本都在5%左右。
    机器配置是8G内存 8个双核的cpu
    各位高手想想还有什么可能
      

  3.   

    先看一个线程看看(不是主进程)速度怎么样
    是不是TZIP在线程中有问题
      

  4.   

    CompressCount := Compress() 好像就是在压缩。。8个双核的cpu,cpu达5%,其实也就是占满了一个核有些任务,多核跑反而会慢好像很正常啊
      

  5.   

     但是看cpu的记录,开10个线程,有10个核有运行程序,剩下几个基本都在0附近。不像是占满了一个核