注意:本文除非特殊指明,”python“都是代表CPython,即C语言实现的标准python,且本文所讨论的是版本为2.7的CPython. python为什么性能差: 当我们提到一门编程语言的效率时:通常有两层意思,第一是开发效率,这是对程序员而言,完成编码所需要的时间:另一个是运行效率,这是对计算机而言,完成计算任务所需要的时间.编码效率和运行效率往往是鱼与熊掌的关系,是很难同时兼顾的.不同的语言会有不同的侧重,python语言毫无疑问更在乎编码效率,life is short,we
本人翻译自<Exper Python Programming> 'Premature optimization is the root of all evil in programming' -Donald Knuth 优化的三原则 让它跑起来先 一个非常常见的错误就是在编写代码之初我们就开始对代码进行优化.让人伤心的是这通常做的都是无用功,很多软件只有你跑起来了才会发现它真正的瓶颈在哪里. 站在用户的视角看问题 曾经有一个团队为了自己的项目跑起来更快加班加点最终达到了自己满意
1.优化循环 循环之外能做的事不要放在循环内,比如下面的优化可以快一倍 2.使用join合并迭代器中的字符串 join对于累加的方式,有大约5倍的提升 3.使用if is 使用if is True比if == True将近快一倍 4.使用级联比较x < y < z x < y < z效率略高,而且可读性更好 5.使用**而不是pow %timeit -n 10000 c = pow(2,20) %timeit -n 10000 c = 2**20 10000 loops, best
Python开启尾递归优化 cpython本身不支持尾递归优化, 但是一个牛人想出的解决办法:实现一个 tail_call_optimized 装饰器 #!/usr/bin/env python2.4 # This program shows off a python decorator( # which implements tail call optimization. It # does this by throwing an exception if it is # it's own g
1. 第二种方式可以节省寻找result的append属性的时间, 但会降低代码可读性和可维护性 # The way we're used to seeing it: result.append("hello") # But this works the same: append_result = result.append append_result("hello") 2. 将Python内置的方法在函数内重命名:寻找局部变量快于寻找全局变量和内置变量 # -*-