• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

竹千代

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

优化程序

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

 

posted on 2015-05-26 10:07  竹千代  阅读(139)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3