Python数据结构开销/性能

时间:2008-11-21 14:22:56

标签: python optimization

在Python中使用字典而不是元组是否有任何性能优势?

如果我正在优化速度,是否有理由偏爱另一个?

4 个答案:

答案 0 :(得分:19)

富,

列表和词汇是适合不同需求的野兽。确保你不使用列表进行线性搜索,其中dicts哈希是完美的,因为它的速度较慢。此外,如果您只需要遍历的元素列表,请不要使用dicts,因为它将占用比列表更多的空间。

这可能听起来很明显,但是通过算法选择正确的数据结构可以获得更高的性能,因为更高效的编译代码布局等可以实现微优化。如果您在O(n)中的列表中搜索而不是在dict中搜索在O(1)中,微优化不会拯救你。

答案 1 :(得分:6)

为少数元素构造元组的速度会稍快一些。虽然实际上大多数增益都是在内存中使用而不是CPU周期,因为元组需要的空间比列表少。

话虽如此,性能差异应该可以忽略不计,一般情况下,在分析代码并确定一段代码瓶颈之前,您不必担心这些微优化问题。

答案 2 :(得分:2)

最大的区别是元组是不可变的,而列表和字典是可变数据结构。这意味着元组也更快,所以如果你有一组没有改变的项目,你应该优先于列表。

答案 3 :(得分:0)