python之提升程序性能的解决方案
Python在性能方面不卓越,但是使用一些小技巧,可以提高Python程序的性能,避免不必要的资源浪费。
1. 使用局部变量
尽可能使用局部变量替代全局变量,可以是程序易于维护并且有助于提高性能节约成本。
2. 减少函数调用的数量
当需要确定对象类型时,使用isinstance()方法最好,id()次之,type()最差。
为了避免重复计算,不要把重复操作作为参数放入循环中。
3. 使用映射来替换条件搜索
映射(例如dict,等等)的搜索速度比条件语句(例如if,等等)快很多。在Python中没有select-case语句。
4. 直接迭代序列元素
5. 用生成器表达式替换列表解析
列表解析生成整个列表,会对大量数据的迭代产生负面作用。而生成器表达式不会。生成器表达式不会创建一个列表,相反返回一个生成器,在需要的时候生成具体值(延迟的),这种方式对内存友好。
6. 先编译后调用
当使用函数eval()和exec()来执行代码时,最好调用代码对象(通过compile()函数预先编译成字节码)而不是直接调用str,这样可以避免重复编译过程多次和提高程序的性能。 正则表达式模式匹配是类似的。 在执行比较和匹配之前,最好将正则表达式模式编译为正则表达式对象(通过re.complie()函数)。
7. 模块编程的习惯
模块中最高级别的Python语句(无缩进代码)将在导入模块时执行(是否真的需要执行)。 因此,您应该尝试将模块的所有功能代码放入函数中(与主程序相关的功能代码也可以放入main()函数,主程序本身调用main()函数)。 测试代码可以写在模块的main()函数中。 将在主程序中检测__name__的值。 如果是"__main__"(表示模块是直接执行的),则调用main()函数进行测试; 如果它是模块的名称(表示模块被调用),则不会执行测试。
python之提升程序性能的解决方案的更多相关文章
- [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能
[.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...
- python cProfile分析程序性能
转自:http://xianglong.me/article/analysis-python-application-performance-using-cProfile/?utm_source=tu ...
- Function.apply()在提升程序性能方面的技巧
我们先从Math.max()函数说起,Math.max后面可以接任意个参数,最后返回所有参数中的最大值. 比如 alert(Math.max(5,8)) //8alert(Math.max(5,7 ...
- Python 为了提升性能,竟运用了共享经济
大家或许知道,Python 为了提高内存的利用效率,采用了一套共用对象内存的分配策略. 例如,对于那些数值较小的数字对象([-5, 256]).布尔值对象.None 对象.较短的字符串对象(通常 是 ...
- java程序性能优化
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...
- 25个增强iOS应用程序性能的提示和技巧(高级篇)(1)
25个增强iOS应用程序性能的提示和技巧(高级篇)(1) 2013-04-16 14:56 破船之家 beyondvincent 字号:T | T 在开发iOS应用程序时,让程序具有良好的性能是非常关 ...
- 25个增强iOS应用程序性能的提示和技巧(中级篇)(3)
25个增强iOS应用程序性能的提示和技巧(中级篇)(3) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分 ...
- 25个增强iOS应用程序性能的提示和技巧(中级篇)(2)
25个增强iOS应用程序性能的提示和技巧(中级篇)(2) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分 ...
- 25个增强iOS应用程序性能的提示和技巧--中级篇
25个增强iOS应用程序性能的提示和技巧--中级篇 标签: ios性能优化内存管理 2013-12-13 10:55 738人阅读 评论(0) 收藏 举报 分类: IPhone开发高级系列(34) ...
随机推荐
- Intellij Idea 星云常用配置工具箱
1. 软件配置篇 1.1 关闭默认打开最近的工程选项 1.2. 修改快捷键 1.3 修改字体 1.4 创建类模板 效果如下: 1.5 创建接口模板 效果同上 2. 插件篇 1.1 省略Getter a ...
- .NET三层架构开发初步
转自:https://www.cnblogs.com/weilengdeyu/archive/2013/01/04/2844847.html 今天咱们来谈下三层架构.说到三层架构,搞过点程序的可能都知 ...
- Java的策略和保护域
参考文章: (1)java之jvm学习笔记十(策略和保护域) https://blog.csdn.net/yfqnihao/article/details/8271415
- 《BLACK HAT PYTHON3》
Black Hat Python3 kali 安装新版本python kali中自带的pyhton是2.7版本,显然2019年了,python2.x的版本已经逐渐过时,好多第三方库都逐步宣布不再支持p ...
- Gamma阶段事后分析
设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决的是安卓游戏的自动化异常检测问题,定义的足够清楚,对于典型用户的描述和典型场景的描述也足 ...
- react-native项目如何在xcode上打开ios项目
如何打开ios项目? 导入或者双击ios/thirtydays.xcodeproj
- docker 学习操作记录 5
记录5 * Overheard at KubeCon: "microk8s.status just blew my mind". https://microk8s.io/docs/ ...
- QuantLib 金融计算——基本组件之 Money 类
目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...
- Elasticsearch Transport 模块创建及启动分析
Elasticsearch 通信模块的分析从宏观上介绍了ES Transport模块总体功能,于是就很好奇ElasticSearch是怎么把服务启动起来,以接收Client发送过来的Index索引操作 ...
- Java多线程编程(2)--多线程编程中的挑战
一.串行.并发和并行 为了更清楚地解释这三个概念,我们来举一个例子.假设我们有A.B.C三项工作要做,那么我们有以下三种方式来完成这些工作: 第一种方式,先开始做工作A,完成之后再开始做工作B ...