有没有人知道os.path.exists函数在带有ext4文件系统的python中的复杂性是什么?
答案 0 :(得分:6)
Ext4 (和 Ext3 )使用的基础目录结构与 Ext2 完全相同。 Ext3 添加了日记功能, Ext4 改进了日记功能。日记与您的问题无关。
最初Ext2用于将其存储为列表,但这对于大型目录来说当然效率低下。所以它已被改为调整版B树,称为HTree。与标准B树不同,HTree具有恒定深度并且每个节点使用散列映射,因此它的查找复杂度为 O(1)。
Ext2的方案,我们称之为 “HTree”,使用32位哈希键, 其中每个哈希键引用一个范围 存储在叶块中的条目。 由于内部节点只有8个字节, HTree有很高的扇出因素 (可以引用超过500个块 使用4K索引块),两个级别 索引节点足以支持 超过1600万52个字符 文件名。进一步简化 实现,HTree是不变的 深度(一个或两个级别)。该 高扇出系数的组合 和使用文件名的哈希, 加上特定于文件系统的秘密 作为HTree的搜索键, 避免了实施的需要 做平衡操作。
请参阅:http://ext2.sourceforge.net/2005-ols/paper-html/node3.html
答案 1 :(得分:0)
很有可能复杂度为O(n)
,其中n是文件系统中的深度(例如/将有n = 1,/ n = 2,...)