这两种代码方案哪个更快一些

2018-06-25 14:59:35 +08:00
 imn1
仅指理论上,速度优先于内存
递归目录树,符合过滤规则的,进行操作,过滤规则有多条(很可能是正则),对应不同操作
1.递归一个目录树,返回全部 dir/file 的 fullpath --> list
然后依据过滤器,过滤出符合的,再迭代操作
2.一边递归一边判断过滤规则并操作

暂时不考虑目录树内文件变化的情况(复制、删除、移动、改名),也就是只读
有变化也只能用后者吧?
另外也要考虑将来过滤规则变化,代码改动少的情况
1185 次点击
所在节点    问与答
5 条回复
clino
2018-06-25 15:23:39 +08:00
第二种如果能用到多核有可能会比较快

另外过滤规则有多条的话,建议看能不能合并成一个正则这样应该能提升效率
herozhang
2018-06-25 15:28:08 +08:00
CPU 速度远快于 IO,所以应该优先解决 IO 问题。
然后就是一个 IO 调度的问题了,如果能把不同目录分布到不同存储器上,或者文件系统本身提供目录结构的元数据是最好的了。
imn1
2018-06-25 15:56:25 +08:00
@clino
对应操作不同,不能合并

@herozhang
道理知道,那应该是第一种吧?尽快结束 getfileinfo 的操作,不用等处理操作完成再 next
luoway
2018-06-25 16:42:37 +08:00
第二种更快吧
按 #2 说的,第一种 IO 时间 CPU 空闲着
clino
2018-06-25 17:39:24 +08:00
@imn1 #3
我以前做过一个将多条正则规则合并成一个,每一条给一个标识符,识别出来以后能够根据标识符来对应识别到的是哪一条来针对做处理
用到的正则语法可以参考在 https://docs.python.org/2/library/re.html 里搜索 (?P<name>...)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX