转译解读

首先提高代码的性能不能以改变代码功能为代价。

简而言之,按照原文说的:

  • 1.首先将代码写对
  • 2.测试代码是否正确执行
  • 3.如果代码效率不高就分析是哪个部分造成的。
  • 4.优化这个部分
  • 5.从第二步开始重复这个部分

详细的解读包括:

选择一个正确的数据结构。

这个说法深有体会。Python中多变的数据结构可以造成很大的差异,使用一个set就可以事半功倍。甚至一个自己定义的数据结构,对于内存,运算速度,处理方式等都有很大的影响。

进行排序

我在项目中也遇到过,爬取的几百万的数据URL需要进行鉴别,哪些数据抓取了哪些没有,抓取的部分还有重复。使用if x in y这种格式,则需要o(m*n)的时间复杂度。而两边都对URL进行排序后,则可以使用两个指针轻松搞定。

示例中使用了operator 模块的itemgetter() 函数,进行了快速的分类,优雅而简洁。

n = 1
import operator
nlist.sort(key=operator.itemgetter(n))

字符串组合

编写大字符串的时候,不建议使用加号拼接字符串。使用join,%s(py3中使用format方法)等官方的方法效果更好。

循环的使用

如果使用for循环进行简单而大量的操作,不妨试试map()函数,或者python2.0中就已经有的list方法直接生成。或者使用迭代器进行循环的操作。

避免使用点方法

如上,需要使用list.append()方法的时候,这些方法都是需要在每次调用的时候重新确定(原文reevaluated)的,所以可以提前代替,如re.compile()方法。

upper = str.upper
newlist = []
append = newlist.append
for word in oldlist:append(upper(word))

使用局部变量

可以将一些代码函数化,从而将变量转为局部变量,Python获取局部变量比使用全局变量要快得多。

原文最终做了一个比较实验,将38470个单词转换成大写,结果是:

Version Time (seconds)
Basic loop 3.47
Eliminate dots 2.45
Local variable & no dots 1.79
Using map function 0.54

可见使用map具有巨大的优势。

初始化字典元素

字典的当前使用新技巧包括:使用keyError来定位没有的key,使用get()方法来返回键对应的值。字典中还有collections模块中较多的:defaultdict,OrderedDict类等。

首先在头部写明 import 声明

大量的import会影响Python的性能。虽然随处可以import, 但最好在代码的头部集中写明。

数据的聚合

一次将多个数据聚合起来传递给函数比多次调用函数的开销要小得多。

减少执行语句的数量

Python中有一个定期检查线程是否该运行的函数。这个函数的大量调用会影响性能。最好我们可以设置这个值为较大的数,或者使用少的执行语句而以空间换时间。

Python不是C

移位不一定比加法快。Python是一个高级语言,调用底层不一定快。

使用xrange而不是range

在py3中不用考虑这一条。因为range已经优化了。

对代码进行优化

有时候有些函数你知道不会执行,就可以直接省略。减少不必要的操作。

使用profile

import profile
profile.run('main()')

给Python加速(性能加速的方法)相关推荐

  1. python视频处理加速的库_VPF:适用于 Python 的开源视频处理框架,加速视频任务、提高 GPU 利用率...

    原标题:VPF:适用于 Python 的开源视频处理框架,加速视频任务.提高 GPU 利用率 雷锋网 AI 开发者按:近日,NVIDIA 开源了适用于 Python 的视频处理框架「VideoProc ...

  2. scp命令默认传输速度多大_测试scp加速传输速度的方法

    玩蛇网推荐图文教程:python 列表 节省时间是IT工作者简明实用代码的体现,测试scp加速传输速度的方法是样的呢?例如要在机器之间传输400GB这样比较大的文件的时候,传输的速度是会是你非常在意的 ...

  3. [PHP] - 性能加速 - 开启opcache

    说明 PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的).对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法 ...

  4. 从 FFmpeg 性能加速到端云一体媒体系统优化

    简介:7 月 31 日,阿里云视频云受邀参加由开放原子开源基金会.Linux 基金会亚太区.开源中国共同举办的全球开源技术峰会 GOTC 2021 ,在大会的音视频性能优化专场上,分享了开源 FFmp ...

  5. [Python人工智能] 七.加速神经网络、激励函数和过拟合

    从本系列文章开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前六篇文章讲解了神经网络基础概念.Theano库的安装过程及基础用法.theano实现回归神经网络.theano实现 ...

  6. OpenCV 4.3 来了!功能增加,性能加速,例程更丰富~

    OpenCV 4.3 版正式发布了! 这是OpenCV每年例行发布的春季版,DNN模块依旧是开发重点,官方一直在进行深度学习推理功能的完善和例程的丰富,另外社区也贡献了不少亮点,我们一起来看看吧! D ...

  7. 开发打开设置洁面_用了两到三年的华为手机,一键打开开发者选项,帮助性能加速...

    用了两到三年的华为手机,可以一键打开"开发者选项",帮助性能加速 我们手机用了两到三年,速度和刚买的时候相比,明显是变慢了一大截.今天笔者就带来一个华为手机的使用小技巧,华为开发者 ...

  8. python for循环加速_干货总结,24招加速你的Python代码,值得收藏

    一,分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(jupyter环境) 第3式,按调用函数分析代码运行时间 ...

  9. 在日常使用中关于英特尔睿频加速的优劣分析(附带关闭睿频加速的两种方法)

    在日常使用中关于英特尔睿频加速的优劣分析 事情背景 事情起因 过程分析测试 日常使用分析 结论 开关睿频加速(寻找解决方法的朋友可以直接跳到这里来) 方法1:在电源管理操控是否开启睿频加速(推荐) 解 ...

最新文章

  1. Winsock编程宝典(转帖)
  2. mysql5.7 修改密码
  3. 合并石子 区间dp水题
  4. function checkBrowser()//判断浏览器
  5. pxe装机dhcp获取不到_关于PXE服务器环境搭建流程中遇到的问题及解决方法
  6. Jenkins安装部署篇
  7. Linux 系统下对目录扩容的方法
  8. 以整数元素构成的list中的数字组成最小整数
  9. 火山PC后台操作第三方窗口案例
  10. SuperMap iDesktop入门实战-张杰-专题视频课程
  11. 祝贺MindV进入香港国际软件大奖赛100强
  12. CCS6.0新建DSP_2833x工程文件详解
  13. 算法竞赛进阶指南0x10练习6:防线
  14. 九种免费的PDF翻译工具,多国语言随意转换!
  15. SDN与OPENFLOW 简介
  16. Redis进阶—分布式锁
  17. java jtextarea清空_Java:JTextArea类
  18. 【资料分享】工程师必备物联网资料合集 电子书PDF
  19. 【问题描述】建立一个通讯录的结构记录,包括姓名、生日、电话号码。输入n(n<10)个朋友的信息,再按他们的年龄从大到小的顺序依次输出其信息
  20. 富文本框让最大四百像素_8 大功能,适合摄影师、设计师的开源工具集

热门文章

  1. 在线问卷调查系统的分析与实现
  2. 小型鸡尾酒推荐系统运行记录(github项目)
  3. 苹果系统和windows系统怎么切换_【电脑】在windows系统上安装苹果Mac系统
  4. 数据标注工厂里的职业生涯!
  5. Rust Wasm 图片转 ASCII 艺术
  6. 蜻蜓FM笔试题目,求两个点的最近父节点
  7. 王者荣耀静态页面中间代码设计(1)
  8. Serializable简单介绍
  9. 无线蓝牙耳机排行榜_2021公认性价比最高蓝牙耳机品牌
  10. 风控产品说-用户体验和风控-以IP封禁为例