递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

31

主题

233

帖子

1674

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

106

主题

1092

帖子

5883

积分

核心用户

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

59

主题

442

帖子

2701

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2701
板凳
发表于 2025-9-26 13:37:39 | 只看该作者
加入文本()...............
回复

使用道具 举报

19

主题

182

帖子

2200

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

29

主题

2567

帖子

9051

积分

核心用户

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

18

主题

210

帖子

2567

积分

核心用户

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

31

主题

233

帖子

1674

积分

金牌会员

Rank: 6Rank: 6

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

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

使用道具 举报

31

主题

233

帖子

1674

积分

金牌会员

Rank: 6Rank: 6

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

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

使用道具 举报

31

主题

233

帖子

1674

积分

金牌会员

Rank: 6Rank: 6

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

确实是调试速度……
回复

使用道具 举报

35

主题

236

帖子

2037

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2037
10#
发表于 2025-9-26 19:37:13 | 只看该作者
学习了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-15 00:47 , Processed in 0.095494 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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