递归火山软件开发平台

标题: 枚举只要2秒,加入数组则要38秒,求高手支招。 [打印本页]

作者: 曼菲士    时间: 昨天 13:18
标题: 枚举只要2秒,加入数组则要38秒,求高手支招。
    枚举一个文件夹里的所有文件,里面有42万个文件,用寻找文件的方法耗时只要2秒,想要把找到的文件记录下来以便处理,用数组的话,光是"文件.加入成员()"就会增加38秒耗时,时间太长,如果文件数量上到160万,耗时将更长,有什么方法比数组更快吗?

作者: 小蜗牛    时间: 昨天 13:36
用回调啊.枚举到文件就马上处理 不需要数组,当然你也可以用队列,或者数组预分配内存
作者: li327065266kun    时间: 昨天 13:37
加入文本()...............
作者: zlk    时间: 昨天 13:37
文件数组.批量加入新成员(文件,10000)
用的时候文件数组.取成员(),不够就再批量加入,
最后删除成员()可以把后面没用到的一次性删除。
作者: Xelloss0618    时间: 昨天 13:44
你这是调试的速度吧?编译发布版后会快很多倍的。
这种用内存存储数据的方式,要加快只能是减少内存重分配的次数,比如设置数组的预分配尺寸。
作者: 小小小小鸟    时间: 昨天 14:09
文件数组.预分配尺寸=1000000,让你快的飞起。
作者: 曼菲士    时间: 昨天 15:26
小小小小鸟 发表于 2025-9-26 14:09
文件数组.预分配尺寸=1000000,让你快的飞起。

用数组预分配后耗时仅4秒,比41秒快了十倍,多谢大佬支招!:噜阿噜
作者: 曼菲士    时间: 昨天 15:27
小蜗牛 发表于 2025-9-26 13:36
用回调啊.枚举到文件就马上处理 不需要数组,当然你也可以用队列,或者数组预分配内存 ...

边枚举边处理也不错,谢谢大佬支招:噜阿噜
作者: 曼菲士    时间: 昨天 15:28
Xelloss0618 发表于 2025-9-26 13:44
你这是调试的速度吧?编译发布版后会快很多倍的。
这种用内存存储数据的方式,要加快只能是减少内存重分配 ...

确实是调试速度……
作者: 199    时间: 昨天 19:37
学习了
作者: 创世魂    时间: 昨天 20:16
编译发布版就快多了。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4