【原创】Python 之快速性能优化(第一部分)

本文为翻译, 原文地址:《 Quick Python Performance Optimization: Part I 》 

This is part I of a two part series of blog post on performance optimization in python. 
Aim is to just explain, the right way to do simple things which we use in day-to-day python programming, and has a very relevant performance impact. 
此文为关于 Python 性能优化的二连发博文的首篇 ,目标是解释清楚,如何按照正确且简单的方式做好每日 Python 编程,并且能获得好的性能体验。 

1. %timeit (per line) and %prun (cProfile) in ipython interactive shell.  
Profile your code while working on it, and try to find of where is the bottleneck. This is not contrary to the fact that premature optimization is the root of all evil. This is mean for the first level optimization and not a heavy optimization sequence. 
For more on profiling python code, you should read this: http://www.huyng.com/posts/python-performance-analysis/ 
Another interesting library, line_profiler is for line by line profiling https://bitbucket.org/robertkern/line_profiler 
1. 在 ipython 交互式 shell 中使用  %timeit(每行使用)和   %prun(cProfile) 
在你开发代码的过程中时时进行性能测量,努力找出瓶颈所在。这种方式并不与“过早优化是万恶之源”的想法相违背。而是指第一个层次上的优化,而不是重度优化。 
关于对 python 代码的更多性能测量,可以参阅 这里 。 
另一个有意思的库 --  line_profiler -- 可用于按行性能调优。 

2. Reduce the number of function calls. If you need a list to be manipluated, pass the entire list, rather than iterating over the list and passing  each element to the function and returning. 
2. 减少函数调用次数 。如果你需要对列表进行操作,那么请直接传入整个列表,而不是在列表上做迭代,然后分别将每一个列表元素传入函数再返回。 

3. Use xrange instead of range. (in Python2.x - this is by default in Python3.x) 
xrange is C implementation of range, with an eye on efficient memory usage.  
3. 使用 xrange 替代 range 。(在 Python2.x 中 - 在 Python3.x 中是默认行为) 
xrange 是 range 的 C 实现版本,主要增强了内存使用上的效率。 

4. For huge data, use numpy , its better than standard datastructures. 
4. 对于大块数据,请使用 numpy ,它比标准的数据结构要更优秀。 

5. "".join(string) is better than + or += 
5. "".join(string) 比 + 或 += 更优秀。 

6. while 1 is faster than while True 
6. while 1 比 while True 执行速度更快。 

7. list comphrension > for loop > while loop 
list comprehension is faster than looping over the list, and while loop is the slowest, with an external counter with it. 
7. 列表推导 > for 循环 > while 循环 
列表推导的运行速度快于在列表上做 for 循环,而在列表上做 while 循环是最慢的一种方式,因为其需要额外的计数器。 

8. use cProfile , cStringIO and cPickle 
always use available C versions of the modules. 
8. 使用 cProfile、cStringIO 和 cPickle 
总是使用模块的 C 实现版本。 

9. Use local variables . 
local variables are faster than global variables, builtins or attribute lookups 
9. 使用本地变量。 
本地变量要快于全局变量、内置变量,或属性值的查找。 

10. list and iterators versions exist - iterators are memory efficient and scalable. Use itertools 
Create generators and use yeild as much as posible. They are faster compared to the normal list way of doing it. 
http://www.diveinto.org/python3/iterators.html 
http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained 
Lets continue to part two for next level of quick optimization tricks here. 
10. 列表和迭代器 -- 迭代器 具有内存方面的效率和可扩展特性。请使用 itertools 。 
创建生成器,并尽可能使用 yeild 。他们都比常规列表操作要更快。 

时间: 2024-09-14 18:02:26

【原创】Python 之快速性能优化(第一部分)的相关文章

【原创】Python 之快速性能优化(第二部分)

本文为翻译,原文地址:< Quick Python Performance Optimization: Part II >  This is the Part II of Quick Python Performance Optimizations. 本文是 Python 性能优化二两发的第二部分.  11. Use Map, Reduce and Filter instead of for loop where ever possible. 11. 尽可能使用 Map,Reduce 和 Fi

Python 代码性能优化技巧分享_python

如何进行 Python 性能优化,是本文探讨的主要问题.本文会涉及常见的代码优化方法,性能优化工具的使用以及如何诊断代码的性能瓶颈等内容,希望可以给 Python 开发人员一定的参考. Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 80% 的工作量.优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率. 改进算法,选择合适的数据结构 一个

Android性能优化典范 - 第3季

Android性能优化典范的课程最近更新到第三季了,这次一共12个短视频课程,包括的内容大致有:更高效的ArrayMap容器,使用Android系统提供的特殊容器来避免自动装箱,避免使用枚举类型,注意onLowMemory与onTrimMemory的回调,避免内存泄漏,高效的位置更新操作,重复layout操作的性能影响,以及使用Batching,Prefetching优化网络请求,压缩传输数据等等使用技巧.下面是对这些课程的总结摘要,认知有限,理解偏差的地方请多多交流指正! 1)Fun with

性能优化系列总篇

本文为性能优化系列的总纲,主要介绍性能调优专题计划.何为性能问题.性能调优方式及前面介绍的数据库优化.布局优化.Java(Android)代码优化.网络优化具体对应的调优方式. 1.调优专题博客计划 目前性能优化专题已完成以下部分: 性能优化总纲--性能问题及性能调优方式 性能优化第四篇--移动网络优化 性能优化第三篇--Java(Android)代码优化性能优化第二篇--布局优化性能优化第一篇--数据库性能优化 性能优化实例   后续计划性能优化--诊断及工具(目前只有关于TraceView的

C++ 应用程序性能优化

C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方程,以及非线性优化的一些算法,如BFGS,FRPR,PSO等等用于多元函数的极值求解,所以这些数值算法的性能直接影响系统的性能.软件的性能优化是计算机软件开发过程中需要一直关注的重要因素,因此有必要学习下C++应用程序性能优化的方法. 在网上寻找相关资料时,发现这方面的资料也很少,最后发现一本由电子

利用 NGINX 最大化 Python 性能,第一部分:Web 服务和缓存

[编者按]本文主要介绍 nginx 的主要功能以及如何通过 NGINX 优化 Python 应用性能.本文系国内 ITOM 管理平台 OneAPM 编译呈现. Python 的著名之处在于使用简单方便,软件开发简单,而且据说运行性能优于其它脚本语言.(虽然最新版本的 PHP.PHP 7 可能会与它展开激烈竞争.) 所有人都希望自己的网站和应用程序运行得更快一些.但是,每个网站在流量增长或骤然出现流量峰值时都很容易发生性能问题.甚至宕机(这一般会在服务器最繁忙的时候发生).此外在运行期间,无论是流

Python性能优化经验之谈(翻译)

在微博上看到了一遍文章,然后就试着翻译了一下,有些地方看不懂,就直接贴原文了,还望能看懂的人指点一下. # 快速的Python性能优化 # 1.%timeit (per line) and %prun (cProfile) in ipython interactive shell. Profile your code while working on it, and try to find of where is the bottleneck. This is not contrary to t

Java 程序性能优化《第一章》Java性能调优概述 1.4小结

Java 程序性能优化<第一章>1.4小结 通过本章的学习,读者应该了解性能的基本概念及其常用的参考指标.此外,本章还较为详细的介绍了与性能调优相关的两个重要理论--木桶原理以及Amdahl定律. 根据木桶原理,系统的最终性能总是由系统中性能最差的组件决定的.因此,改善该组件的性能对提升系统整体性能有重要的作用.而根据Amdahl定律,可以知道只是增加处理器数量对提升系统性能并没有太大的实际意义,必须同时提高程序的并行化比重. 本章还简要的介绍了在软件开发和维护过程中可以进行性能优化的各个阶段

Java 程序性能优化《第一章》Java性能调优概述 1.2性能调优的层次

Java 程序性能优化<第一章>1.2性能调优的层次 为了提升系统性能,开发人员开始从系统各个角度和层次对系统进行优化.除了最常见的代码优化外,在软件架构上.JVM虚拟机层.数据库以及操作系统层面都可以通过各种手段进行优化,从而在整体上提升系统的性能. 1.2.1 设计调优 设计调优处于所有调优手段的上层,它往往需要在软件开发之前进行.在软件开发之处,软件架构师就应该评估系统可能存在的各种潜在问题,并给出合理的设计方案.由于软件设计和架构对整体质量有决定性的影响,所以,设计调优对系统性能的影响