在多线程中使用过ZIPTV组件的进!!

wellwelcome 2009-11-19 05:24:39

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();这句。
...全文
85 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2009-11-19
  • 打赏
  • 举报
回复
就是任务被分散到多个核了,但是全部加起来基本正好等于占满了一个核,也就是机器的1/16
wellwelcome 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sz_haitao 的回复:]
CompressCount := Compress() 好像就是在压缩。。。。。。。。

8个双核的cpu,cpu达5%,其实也就是占满了一个核

有些任务,多核跑反而会慢

好像很正常啊
[/Quote]
但是看cpu的记录,开10个线程,有10个核有运行程序,剩下几个基本都在0附近。不像是占满了一个核
haitao 2009-11-19
  • 打赏
  • 举报
回复
CompressCount := Compress() 好像就是在压缩。。。。。。。。

8个双核的cpu,cpu达5%,其实也就是占满了一个核

有些任务,多核跑反而会慢

好像很正常啊
wellwelcome 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wintergoes 的回复:]
先看一个线程看看(不是主进程)速度怎么样
是不是TZIP在线程中有问题
[/Quote]
启一个线程跟在主进程中的时间一样
wintergoes 2009-11-19
  • 打赏
  • 举报
回复
先看一个线程看看(不是主进程)速度怎么样
是不是TZIP在线程中有问题
wellwelcome 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wintergoes 的回复:]
CompressCount := Compress();
是做什么用的?
[/Quote]
这个函数就是用来压缩的
wellwelcome 2009-11-19
  • 打赏
  • 举报
回复
单线程和多线程的cpu的使用基本都在5%左右。
机器配置是8G内存 8个双核的cpu
各位高手想想还有什么可能
wintergoes 2009-11-19
  • 打赏
  • 举报
回复
单线程的时候CPU占用多少?
wintergoes 2009-11-19
  • 打赏
  • 举报
回复
CompressCount := Compress();
是做什么用的?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧