博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码性能分析
阅读量:5321 次
发布时间:2019-06-14

本文共 1135 字,大约阅读时间需要 3 分钟。

代码性能优化

优化是对代码进行等价变换,使得变换后的代码运行结果与变换前的代码运行结果相同,但执行速度加快或存储开销减少。

  • 代码性能优化是一门复杂的学问。
  • 根据 80/20 原则,实现程序的重构、优化、扩展以及文档相关的事情通常需要消耗80% 的工作量。
  • 在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率
  • 以提高程序的全局效率为主,提高局部效率为辅
  • 在优化程序效率时,应先找出限制效率的“瓶颈”
  • 先优化数据结构和算法,再优化执行代码
  • 时间效率和空间效率可能是对立的,应当分析哪一个因素更重要,再做出适当的折衷
  • 从一开始就要考虑程序性能,不要期待在开发结束后再做一些快速调整
  • 正确的代码要比速度快的代码重要,任何优化都不能破坏代码的正确性

  • 认真选择测试数据,使其能够代表实际的使用状况
  • 永远不要在没有执行前后性能评估的情况下尝试对代码进行优化

性能测试工具

Profile是Python语言内置的性能分析工具,它能够有效地描述程序运行的性能状况,提供各种统计数据帮助程序员找出程序中的性能瓶颈。

案例:原因分析

为什么 keys() 函数的调用复杂度过高?

keys(): Return a new view of the dic5onary’s keys(docs.python.org)
  • 原因:每调用一次keys()函数,系统就会生成一个新的字典迭代器,如果这个生成过程重复50万次,…...
  • 优化:使用 in 操作符直接代替keys(),不再每次生成新的迭代器。

案例:优化结果

  • 性能优化的关键是如何发现问题,寻找解决问题的方法。
  • 有效的测试是不可缺少的,通过测试找出真正的瓶颈,并分析优化结果
  • 要避免不必要的优化,避免不成熟的优化,不成熟的优化是错误的来源

Python 代码性能优化

改进算法,选择合适的数据结构

  • 良好的算法对性能起到关键作用,因此性能改进的首要点是对算法改进
  • 算法时间复杂性的排序依次是
  • 对成员的查找访问等操作,字典(dictionary)要比列表(list)更快
  • 集合(set)的并、交、差的操作比列表(list)的迭代要快

循环优化的基本原则:尽量减少循环过程中的计算量,在多重循环的时候,尽量将内层的计算提到上一层。

字符串的优化: Python的字符串对象是不可改变的。字符串连接的使用尽量使用 join() 而不是 +。当对字符串可以使用正则表达式或者内置函数处理时,选择内置函数。

使用列表解析和生成器表达式:列表解析要比在循环中重新构建一个新的list 更为高效,因此可以利用这一特性来提高运行的效率。

转载于:https://www.cnblogs.com/hanqing/p/5697144.html

你可能感兴趣的文章
Servlet 生命周期、工作原理
查看>>
日期常用方法
查看>>
29. 代码实例-设计模式-模板方法
查看>>
Uva-673 Parentheses Balance
查看>>
Codeforces Round #306 (Div. 2) B. Preparing Olympiad dfs
查看>>
CCCC 成都信息工程大学游记
查看>>
Codeforces Round #384 (Div. 2) E. Vladik and cards 状压dp
查看>>
Codeforces Round #109 (Div. 1) 题解 【ABC】
查看>>
工资低的.Net程序员,活该你工资低
查看>>
JS判断客户端是否是iOS或者Android手机移动端
查看>>
linux常用快捷键
查看>>
(一)Activity参数传递
查看>>
Vue父子组件之间通信
查看>>
SQL查询性能优化
查看>>
web appication server
查看>>
用户与用户组
查看>>
杭电ACM减花布条
查看>>
Django框架(五)---- app组件
查看>>
Collection 和 Collections的区别
查看>>
HBase简介
查看>>