Python代码性能优化
来源:互联网 发布:其他设备网络控制器 编辑:程序博客网 时间:2024/05/24 06:09
文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
Python使用非常方便、灵活,因此很受欢迎。但正因为如此,导致实现同一功能时,Python代码有很多写法,但不同的写法有不同的性能。因此写Python代码要有良好的习惯,多写高性能的代码。作者原来平常写Python代码也很随意,直到某天处理大量数据时半天看不到结果,究其原因,是Python代码的性能问题导致的。
1. 列表解析与列表重建
#!/usr/bin/env python# _*_ coding: utf-8 _*_import timefr = open('words.txt')t1 = time.time()word_list = fr.readlines()t2 = time.time()print 'read file time: ', t2 -t1fr.close()# for循环构建列表keywords = []t1 = time.time()for word in word_list: word = word.strip() keywords.append(word)t2 = time.time()print 'for loop time: ', t2 - t1# 列表解析t3 = time.time()keywords = [word.strip() for word in word_list]t4 = time.time()print 'list pars time: ', t4 - t3fr = open('words.txt')t5 = time.time()keywords = [word.strip() for word in fr.readlines()]t6 = time.time()fr.close()print 'read file and list parse time: ', t6 - t5print 'list length: ', len(word_list)
运行结果:
read file time: 0.0318450927734for loop time: 0.137716054916list pars time: 0.0910630226135read file and list parse time: 0.124923944473list length: 441669
结论:本次测试中,列表解析时间是for循环时间的2/3
。
2. 字符串拼接
#!/usr/bin/env python# _*_ coding: utf-8 _*_import timefr = open('words.txt')keywords = [word.strip() for word in fr.readlines()]fr.close()# 加号拼接字符串t1 = time.time()str1 = ''for word in keywords: str1 += wordt2 = time.time()print 'string concat time: ', t2 - t1# join拼接字符串t1 = time.time()str2 = ''.join(keywords)t2 = time.time()print 'string join time: ', t2 - t1print 'list length: ', len(keywords)
运行结果:
string concat time: 0.0814869403839string join time: 0.0123951435089list length: 441669
结论:本次测试中,join
函数拼接字符串比+=
拼接字符串快6倍多
。
3. range与xrange
- range
python中range会直接生成一个list对象。
- xrange
用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器,它的类型为xrange
。在生成非常大的数字序列时,xrange不会马上开辟很大的一块内存空间。如果不是需要返回列表,则尽可能使用xrange
。
测试代码:
#!/usr/bin/env python# _*_ coding: utf-8 _*_import timet1 = time.time()for i in range(1000000): passt2 = time.time()print 'range time: ', t2 -t1t1 = time.time()for i in xrange(1000000): passt2 = time.time()print 'xrange time: ', t2 -t1
测试结果:
range time: 0.0680990219116xrange time: 0.0329170227051
结论:本次测试中,xrange
比range
快一倍多。
阅读全文
0 0
- Python 代码性能优化
- Python代码性能优化
- Python代码性能优化
- Python代码性能优化技巧
- Python 代码性能优化技巧
- python 代码 性能优化技巧
- Python 代码性能优化技巧
- Python 代码性能优化技巧
- Python 代码性能优化技巧
- Python代码性能优化技巧
- Python 代码性能优化技巧
- Python 代码性能优化技巧
- Python 代码性能优化技巧
- Python代码性能优化技巧
- Python 代码性能优化技巧
- Python 代码性能优化技巧
- Python 代码性能优化技巧
- Python 代码性能优化技巧
- C#进阶 15 常量,枚举的声明,结构的声明
- 对于python和wamp中mysql数据库的交互
- 简单封装ajax
- 图像处理学习笔记1
- 创建rabbitmq:virtual host、exchange、queue
- Python代码性能优化
- fl2440添加SIM5900B GPRS模块,进行拨号上网,打电话。
- springMVC框架的运行流程
- 作业2:include指令与include动作有什么区别?
- JQuery选择器
- php static 关键字
- java堆、栈、方法区、常量池
- logcat抓取(崩溃、超时、异常、错误)
- this package import