递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 227|回复: 10
打印 上一主题 下一主题

[视窗] 枚举只要2秒,加入数组则要38秒,求高手支招。

[复制链接]

31

主题

232

帖子

1666

积分

金牌会员

Rank: 6Rank: 6

积分
1666
跳转到指定楼层
楼主
发表于 昨天 13:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    枚举一个文件夹里的所有文件,里面有42万个文件,用寻找文件的方法耗时只要2秒,想要把找到的文件记录下来以便处理,用数组的话,光是"文件.加入成员()"就会增加38秒耗时,时间太长,如果文件数量上到160万,耗时将更长,有什么方法比数组更快吗?
回复

使用道具 举报

100

主题

1068

帖子

5792

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5792
沙发
发表于 昨天 13:36 | 只看该作者
用回调啊.枚举到文件就马上处理 不需要数组,当然你也可以用队列,或者数组预分配内存
回复

使用道具 举报

59

主题

437

帖子

2667

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2667
板凳
发表于 昨天 13:37 | 只看该作者
加入文本()...............
回复

使用道具 举报

19

主题

178

帖子

2182

积分

金牌会员

Rank: 6Rank: 6

积分
2182
地板
发表于 昨天 13:37 | 只看该作者
文件数组.批量加入新成员(文件,10000)
用的时候文件数组.取成员(),不够就再批量加入,
最后删除成员()可以把后面没用到的一次性删除。
回复

使用道具 举报

29

主题

2520

帖子

8922

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8922
5#
发表于 昨天 13:44 | 只看该作者
你这是调试的速度吧?编译发布版后会快很多倍的。
这种用内存存储数据的方式,要加快只能是减少内存重分配的次数,比如设置数组的预分配尺寸。
回复

使用道具 举报

18

主题

192

帖子

2495

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2495
6#
发表于 昨天 14:09 | 只看该作者
文件数组.预分配尺寸=1000000,让你快的飞起。
回复

使用道具 举报

31

主题

232

帖子

1666

积分

金牌会员

Rank: 6Rank: 6

积分
1666
7#
 楼主| 发表于 昨天 15:26 | 只看该作者
小小小小鸟 发表于 2025-9-26 14:09
文件数组.预分配尺寸=1000000,让你快的飞起。

用数组预分配后耗时仅4秒,比41秒快了十倍,多谢大佬支招!:噜阿噜
回复

使用道具 举报

31

主题

232

帖子

1666

积分

金牌会员

Rank: 6Rank: 6

积分
1666
8#
 楼主| 发表于 昨天 15:27 | 只看该作者
小蜗牛 发表于 2025-9-26 13:36
用回调啊.枚举到文件就马上处理 不需要数组,当然你也可以用队列,或者数组预分配内存 ...

边枚举边处理也不错,谢谢大佬支招:噜阿噜
回复

使用道具 举报

31

主题

232

帖子

1666

积分

金牌会员

Rank: 6Rank: 6

积分
1666
9#
 楼主| 发表于 昨天 15:28 | 只看该作者
Xelloss0618 发表于 2025-9-26 13:44
你这是调试的速度吧?编译发布版后会快很多倍的。
这种用内存存储数据的方式,要加快只能是减少内存重分配 ...

确实是调试速度……
回复

使用道具 举报

35

主题

230

帖子

1993

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1993
10#
发表于 昨天 19:37 | 只看该作者
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-9-27 08:16 , Processed in 0.086802 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表