pytables File.get_node()操作的时间复杂度

时间:2013-09-11 18:56:19

标签: python hdf5 pytables

pytables文件操作get_node的时间复杂度是什么?

让我们说我查询

mynode = myfile.get_node(where='group0/group1/..../groupN', name ='mynode')

此操作如何与N一起缩放mynode的父组数? 线性地,即O(N),或更糟的O(N * d)其中d是我的hdf5节点树的平均分支因子,或者非常快O(1)因为pytables内部保留了所有路径的某种字典?

非常感谢!

1 个答案:

答案 0 :(得分:1)

HDF5将节点实现为B树,因此get_node()的时间复杂度为O(log N)[1]。 PyTables不会在字典中对这些路径进行任何预加载以生成此O(1)。但是,一旦加载了一个节点,它就会被标记为“alive”并进入alive_nodes字典。因此,只要节点保留在存储器中,后续访问就是O(1)。所以这是一种懒惰的O(1)操作,你需要预先支付O(log N)成本。

  1. http://en.wikipedia.org/wiki/B-tree