python 中基本运算的性能简析

运算的性能分析有一个高深的词汇——算法分析,主要研究的是运行时间和空间的需求。对计算时间的描述一般通过增长量级,增长量级是一套函数,其渐进增长行为是等价的,用大O来表示。O(1) < O(logb n) < O(n) < O(n logb n) < O(n)< O(n2)<O (n3)<O(cn )

对数算法中的基数并不重要,指数算法只适用于小数据问题。

Python中算数运算的时间是常量,但超大整数的运算增加是线性的。索引操作也是常量时间,无论数据结构如何都是如此。只要循环体中的所有操作都是线性时间,则遍历列表或者字典的for循环是线性时间。如果使用同样的循环添加字符串列表,那么运行时间就是二次方的,所以通常采用join做字符串拼接。

大多数字符串和元组操作都是线性的,除了索引和len,都是常量时间,min和max是线性的,slice操作的时间与输出的长度成正比,与输出的大小无关。

大多数列表方法是线性的,一般而言,尾部添加和删除元素是常量时间,,排序是O(n logb n)。in操作符是线性搜索,字符串的count和find也是如此。

大多数字典操作和方法是常量时间,但copy和update的运行时间是线性的,keys,values与items是线性的,iterkeys,itervalues与iteritems是常量时间,但如果遍历迭代器,循环也是线性的。

还记得有这样一句名言,“如果只有一种数据结构的化,就用hash表吧!”

游手好闲会使人心智生锈

python 中基本运算的性能简析

相关文章:

你感兴趣的文章:

标签云: