python中,同一个功能的实现,可以用多种语句来实现,比如说:while语句、for语句、生成器、列表推导、内置函数等实现,然而他们的效率并不一样。这里有一个小程序来测试它们执行的效率。
1 | import sys |
以上用timeit模块两种测试方式测试了若干组数字,得出的结果是执行内置函数最快,其次就是列表推导,再其次生成器和for循环,while循环最慢。最快的使用内置函数的方法要比使用最慢的while快两倍以上。
简单分析下原因:
- 内置函数比如说map,filter,reduce基本上都是用C语言来实现的,所以速度是最快的,
- 列表推导内的迭代在解释器内是以C语言的速度运行的(一般是for循环的两倍,对大型文件操作而言
- 列表推导效果尤其明显),相比较for循环代码是在PVM步进运行要快的多
- for循环里面含range(),相对速度也会快些,
- while语句是纯粹用Python代码写成,所以速度最慢。
综上,所以函数式编程最好使用内置函数,然后才考虑使用列表推导或for循环。最好不用while循环。
##参考资料