我大概可以运行实验来测量这个自己,但我希望有人能提供详细的答案。额外的数据是否会降低Python对象的性能?
假设我有两个Python数组:
small_array = [{"x": i, "foo": "hamburger"} for i in range(0,10000)]
big_array = [{"x": i, "foo": "hamburger", "bar": "hotdog"} for i in range(0,10000)]
我的问题是:将只涉及的“X”参数基本阵列操作(例如迭代或通过索引访问)被用于small_array
更快相比big_array
?
我在问,因为我经常发现自己构建了一个复杂的数据结构X,我将在其上执行昂贵的操作A和B,使得A和B所使用的X的属性之间的重叠很小。所以我想知道是否有将X分解为Y和Z的性能优势,以便A可以在Y上操作,B可以在Z上操作。
通过“数组”,你是指外部列表还是内部字典?由于字典访问被散列成桶,它大多只会减缓碰撞。我怀疑,添加一打项目可能没有什么区别。 – tdelaney
迭代是时间复杂度O(n),即可预测地随着列表的长度而增长。按索引访问是O(1),即它不应该关系到列表的长度。 – wim