优化程序

python性能是个瓶颈,没必要在上面花太多精力。如果在意性能,应当直接换编程语言。

优化python的思路:

1、数据结构

set/list/dict等等要区分清楚用途

2、算法

不在这里细说,通用思路

3、多层循环

  • 减少不必要的运算         for i in range(10):    x = len(aa) ....
  • 减少构造中间变量         t = a; b = t ; a = t;     =>    a, b = b,a
  • 减少查找变量的深度  保证在locals()中就可以找到,不要去globals(),甚至__builtins__

4、语言特性

  • 用生成器(generator)/yield   对于遍历时,由于它没有构造整个列表,而是由迭代器移动,所以它节省空间
  • 用join连接字符串                它比“+”高效的原因,它只有构造一个最终的字符串;而“+”需要构造n-1个中间字符串
  • 多用C扩展库                  如cPickle等等这样c字母开头的库
  • 迭代生成时多用()                (for i in [1,2..] if i ...) 比  [for i in [1,2..] if i ...]快很多
  • 反序列化工具比较                json.loads比cPickle.loads快近3倍,比eval(...)快20多倍

5、并发

6、特殊工具

  • PyPy          它比CPython实现的Python要快6倍以上
  • cProfile      分析每个函数所用时间,是分析工具

参考:http://segmentfault.com/a/1190000000666603#articleHeader17

时间: 2024-10-06 12:35:46

优化程序的相关文章

基于对象职责明确原则优化程序

学习了如何编写通用数据访问类SQLHelper,在此基础上还可以继续优化程序,基于对象职责明确原则,将程序封装成学生数据信息访问类.班级信息访问类.成绩信息访问类等. 1 /// <summary> 2 /// 学员信息数据访问类 3 /// </summary> 4 class StudentService 5 { 6 public int AddStudent(string studentName, string gender, DateTime birthday, 7 str

浅谈优化程序性能(下)

前言 在上一篇随笔中,我们谈到最小化一个计算中的操作数量不一定会提高它的性能.现在,就让我们来解开为什么会出现这种情况的原因吧. 处理器体系结构 在计算机的处理器中,处理一条指令包括很多操作,可以分为取指(fetch).译码(decode).执行(execute).访存(memory).写回(write back)和更新程序计数器(PC update)等几个阶段.这些阶段可以在流水线上同时进行,如下图所示: 上图中,F.D.E.M 和 W 分别代表上述五个阶段.当然,现代的处理器比这个示例要复杂

重启后“安卓正在升级,正在优化程序”的解决办法

这个现象是升级到4.2.2,再装上4.2.2的Google包以后出现的.自己安装的apps越多,每次重启后需要等待的时间就越多,因为系统会提示“正在优化1/50个应用”,一直到把所有已安装的应用都优化一遍为止.到国外论坛里问了一圈以后,发现是这两个文件在作怪: /system/framework/com.google.widevine.software.drm.odex/system/framework/com.google.widevine.software.drm.jar 试图在RE中删除,

深入理解计算机系统(5.1)------优化程序性能

你能获得的对程序最大的加速比就是当你第一次让它工作起来的时候. 在讲解如何优化程序性能之前,我们首先要明确写程序最主要的目标就是使它在所有可能的情况下都能正常工作,一个运行的很快的程序但是却是错误的结果是没有任何用处的,所以我们在进行程序性能优化之前,首先要保证程序能正常运行,且结果是我们需要的. 而且在很多情况下,让程序跑的更快是我们必须要解决的问题.比如一个程序要实时处理视频帧或者网络包,那么一个运行的很慢的程序就不能解决此问题.再比如一个计算任务计算量非常大,需要数日或者数周,如果我们哪怕

优化程序性能(CSAPP:5)

[前言]虽然现在没有接触过大型项目,但是工作了会注重性能.学习一下,应该能更好更快的理解别人写的经典优秀的代码.结合CSAPP和自己的理解,总结一下. 一.程序优化综述 1.高效程序的特点 (1)适当的算法和数据结构.方法和数据的组织形式无疑是最关键的,是优化的基础: (2)代码能够被编译器转化成高效的可执行代码.需要深入了解使用的编译器的优化方法,和常见的优化策略: (3)运用现代并行编程技术.多核以及硬件支持提供更大的加速可能,例如GPU: 2.优化程序的一般步骤 (1)消除不必要的工作,例

《深入理解计算机系统》 优化程序性能的几个方法

本文几个优化程序性能的方法出自CSAPP第五章,通过不断修改源代码,试图欺骗编译器产生有效的代码 我们先引入度量标准每元素的周期数(CPE),表示程序性能. 我们先定义一个数据结构   data_t 代表数据类型 1 typedef struct{ 2 long len; 3 data_t *data; 4 }vec_rec,*vec_prt; 以及常数IDENT和OP以便在后续的代码中进行不同的操作 //对所有向量的元素求和 #define IDENT 0 #define OP + //对所有

阿里巴巴店铺排名优化程序共享

最近,我的一个朋友想阿里巴巴店这个排名优化,优化根据自己的经验.给一个朋友做了一个粗略的优化方案文件.今天小编平台,要法师同事分享,为了便于讨论,共同研究能够. 下面是优化方案文档完整内容: 事实上,不论独立站点优化.阿里店铺优化.还是淘宝优化.抑或是软件结构优化,终于就是环绕"用户体验".咱们这个是在阿里巴巴中国站开设的阿里店铺. 阿里店铺排名优化大多是在细节上,也能够说就是在产品本身上做优化.由于对于店铺程序代码上咱们肯定是变动不了的.那么就能够从两点来做改善:一是店铺本身,二是产

Java性能优化:程序优化

现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升, 但是我觉得在开发中注意这些,更多的是可以保持一种性能优先的意识,对一些敲代码时间比较短的同学挺有意义的. 一 循环条件下,循环体和判断条件中,都要避免对使用复杂表达式,减少对变量的重复计算 1.在循环中应该避免使用复杂的表达式. 在循环中,循环条件会被反复计算,应该避免把一些计算放在循环进行的部分中,程序将会运行的更快.比如: for(int i=0;i<list.size();

合理应用activity的生命周期优化程序内存

activity的四种状态 运行状态:可和用户交互 暂停状态:部分被覆盖 停止状态:全部被覆盖 销毁状态:该activity结合苏,或activity所在的dalvik进程被结束 涉及的函数: onCreate onStart onRestart onStart onPause onStop onDestory 运行状态分析: 一个 Activity从被创建到被销毁的过程执行了哪些方法: 一个Activity正常的显示出来:执行了 - onCreate(),onStart(),onResume(

浅谈优化程序性能(上)

前言 我们知道,多项式定义为: 在几何学中,多项式是最简单的平滑曲线.简单是指它仅由乘法及加法构成,平滑是因为它类同口语中的平滑,以数学术语来说,它是无限可微,即它的所有高次微分都存在.事实上,多项式的微分也是多项式.简单及平滑的特点,使多项式在数值分析.图论,以及电脑绘图等,都发挥极大的作用.多项式求值是解决许多问题的核心技术.以数值分析为例,多项式函数常常用作对数学库中的三角函数求近似值. 现在,让我们来用 C 语言写一个对多项式求值的函数吧. 直接的算法 直接按照多项式的定义使用循环求值: