IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]python 中基本运算的性能简析

    wireless_com发表于 2015-03-22 18:16:22
    love 0


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

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

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

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

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

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

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



沪ICP备19023445号-2号
友情链接