ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: lhj323323

[已解决] 提速,提取4000多个txt,耗时56.39秒,谢谢prome3、wanghan519、lxdexcel等诸位老师!

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-11 09:35 | 显示全部楼层
本帖最后由 lhj323323 于 2024-2-11 09:41 编辑
gwjkkkkk 发表于 2024-2-11 07:43
7楼应该有明显的提高

老师:
7楼的代码速度提高不明显,以下是提取全部4415个txt的对比

之前,有位老师,是【提取4000多个dat文档】,耗时跨入了10秒大关,但他针对的是dat文档,不是txt
(而那时,我的电脑尚是windowxp,配置更差)所以,个人感觉,硬件不是主要原因。
所以,也套用不了。

快照8.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-11 09:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
飞天篮球猪 发表于 2024-2-11 09:07
供参考...集算器解法...4510个文件可以跑进7秒电脑配置4C16G,利用4线程并行。

老师:

请看看我的电脑配置,是不是太差了
快照9.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-11 09:52 | 显示全部楼层
prome3 发表于 2024-2-10 22:22
我这边运行他的代码也只需要0.07秒。

4000多个txt,由于每个股票的上市天数不同,导致保存的数据的容量也不同
如下图(红框内),而论坛针对上传的附件的总容量,要小于2M
所以,只好提取了一部分txt(40个txt),作为测试数据源。
运行耗时0.07秒,只是针对这40个txt,并不是4415个txt的总耗时。

快照8.png

TA的精华主题

TA的得分主题

发表于 2024-2-11 09:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lhj323323 发表于 2024-2-11 09:38
老师:

请看看我的电脑配置,是不是太差了

你运行一下命令msinfo32,看看你电脑是几核几线程的,现在办公电脑一般都有4核,有的配置更好。
当然,你的问题56秒已经很快了,open方法肯定不会快的,open了就进内存了,假设txt有几十万行超出了内存,就会爆栈,而且vba不能把电脑硬件利用起来,即使你的电脑是多核的,也不能并行处理。如果vba能利用并行把cpu多核调动起来,你的56秒理论上可以缩短至56/cpu核数,比如cpu4核,那理论上可以缩短至56除以4=14秒。再加上文件的数据布局,日期和时间是分段有序的,可以利用哈希算法进一步缩短时间,我这边用集算器哈希算法并行处理,4510个txt可以跑进5秒。供参考。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-11 10:19 | 显示全部楼层
wanghan519 发表于 2024-2-10 20:08
需要去github下载ripgrep那个rg.exe,放到环境变量PATH里,然后大概这样,很多地方没考虑细节

老师

我照抄下来,仍提示出错,请问是什么原因?

快照8.png

TA的精华主题

TA的得分主题

发表于 2024-2-11 10:30 | 显示全部楼层
lhj323323 发表于 2024-2-11 10:19
老师

我照抄下来,仍提示出错,请问是什么原因?

rg后面应该是空格两个双引号,好像写成双引号空格双引号了...
rg确实快的离谱,复制粘贴成4510个txt文本,rg找出每个文件符合正则的第一行,耗时0.4秒
但是如果写成先获取倒数第二行第一列的时间,再逐个执行查找,就慢很多
猜测应该是rg是并发且非线性的搜索,它在正则找行这块的速度真是无人能及,但逻辑复杂一些就得写成顺序执行,或者是我不太会用...

图片.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-11 10:38 | 显示全部楼层
wanghan519 发表于 2024-2-11 10:30
rg后面应该是空格两个双引号,好像写成双引号空格双引号了...
rg确实快的离谱,复制粘贴成4510个txt文本 ...

老师:
请看下图

快照8.png

TA的精华主题

TA的得分主题

发表于 2024-2-11 10:47 来自手机 | 显示全部楼层
lhj323323 发表于 2024-2-11 10:38
老师:
请看下图

那就把command字符串里的rg写成rg.exe的完整路径,路径中最好没有空格

总觉得这方法不那么正经,还是考虑vb怎么优化算法有意思,这个当成参考就好

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-11 10:59 | 显示全部楼层
wanghan519 发表于 2024-2-10 20:08
需要去github下载ripgrep那个rg.exe,放到环境变量PATH里,然后大概这样,很多地方没考虑细节

请问,这里还得创建一个密码,它用于何处?

快照9.png

TA的精华主题

TA的得分主题

发表于 2024-2-11 11:05 来自手机 | 显示全部楼层
lhj323323 发表于 2024-2-11 10:59
请问,这里还得创建一个密码,它用于何处?

这只是个命令行工具,不用密码啊。。。
是不是下载错了,这好像是github的git命令第一次运行会询问的。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 19:34 , Processed in 0.035142 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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