`
uuu999ggg
  • 浏览: 42574 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

python性能调优---优化正则表达式

 
阅读更多

这篇文章翻译自《Dive in Python》18章性能调优,相当于一个学习笔记。

 

代码1

 

allChars = string.uppercase + string.lowercase
if not re.search('^[%s]+$' % allChars, source):
    return "0000"

 

 测试性能

 

C:\samples\soundex\stage1>python soundex1a.py
Woo W000 19.3356647283
Pilgrim P426 24.0772053431
Flingjingwaller F452 35.0463220884

 注:这个性能时间是整个代码的测试时间,代码功能自己看书

 

优化代码2

 

if not re.search('^[A-Za-z]+$', source):
return "0000"

 测试性能

 

C:\samples\soundex\stage1>python soundex1b.py
Woo W000 17.1361133887
Pilgrim P426 21.8201693232
Flingjingwaller F452 32.7262294509

 优化代码3

 

isOnlyChars = re.compile('^[A-Za-z]+$').search
def soundex(source):
    if not isOnlyChars(source):
         return "0000"

 测试性能

 

C:\samples\soundex\stage1>python soundex1c.py
Woo W000 14.5348347346
Pilgrim P426 19.2784703084
Flingjingwaller F452 30.0893873383

原因: 上面的正则表达式可以被编译以获得更好的性能。因为在函数调用过程中表达式没有改变。

可知如果你的表达式不变的话,用compile可以比search获得更好的性能

 

优化代码4

 

 

if not source:
    return "0000"
for c in source:
    if not ('A' <= c <= 'Z') and not ('a' <= c <= 'z'): 
        return "0000"

 测试性能

 

C:\samples\soundex\stage1>python soundex1d.py
Woo W000 15.4065058548
Pilgrim P426 22.2753567842
Flingjingwaller F452 37.5845122774

 时间反而增加了。原因:

正则表达式的引擎是用c写的,直接运行在本地。而循环是用python写的,需要被python解释器运行。即使这个循环很简单,还是不能弥补编译的开销。

 

优化代码5

 

if (not source) and (not source.isalpha()):
    return "0000"

 测试性能

 

C:\samples\soundex\stage1>python soundex1e.py
Woo W000 13.5069504644
Pilgrim P426 18.2199394057
Flingjingwaller F452 28.9975225902
 

最快的!!

分享到:
评论

相关推荐

    Pro Python System Administration

    - 正则表达式 - 错误处理 - 日志记录 3. **自动化运维任务** - 自动化备份 - 自动化部署 - 自动化测试 - 自动化更新与维护 4. **网络监控与故障排查** - 网络流量分析 - 故障检测与诊断 - 性能监控 - ...

    编写“高性能”Python代码

    #### 性能调优技巧 ##### 优化代码 - **内置数据类型**:合理使用Python的内置数据类型可以显著提高程序效率。例如,检查元素是否存在于集合中比在列表中查找快得多。 - **算法优化**:选择正确的算法至关重要。...

    Python3.7.2中文文档-6.Python的HOWTO文档

    11. **性能调优**: Python的性能分析和优化是开发过程中不可或缺的一环。这部分会讲解如何使用cProfile和timeit模块进行性能测试,以及一些常见的优化技巧。 12. **Python与其他语言交互**: 如何通过ctypes或...

    Python库 | mtools-1.5.3-py2-none-any.whl

    2. **性能调优**:通过对日志数据的深入分析,可以发现并优化慢查询,提高数据库性能。 3. **监控与报警**:结合其他自动化工具,`mtools`的数据可以触发报警,提前预警潜在的问题。 4. **日常运维**:定期生成...

    Python库 | pspy-1.4.7-cp37-cp37m-macosx_10_9_x86_64.whl

    `pspy`库对于系统管理员、性能调优专家和开发者来说都是一把利器,它可以帮助你深入了解系统的运行状态,定位问题,优化性能,或者只是为了学习和了解系统的工作方式。在日常开发和运维工作中,掌握`pspy`的使用能够...

    Python-2.6.4.zip

    9. **性能优化**:Python 2.6.4虽然较旧,但仍有一些性能调优技巧,如使用`map()`和`filter()`的列表推导式、避免全局查找、以及正确使用数据结构等。 10. **调试和测试**:使用Python 2.6.4进行开发时,可以借助`...

    pcre-8.42.zip

    PCRE(Perl Compatible Regular Expressions)是一个功能强大的正则表达式库,它被设计成与Perl 5的正则表达式语法和语义相兼容。这个库广泛应用于各种编程语言和软件项目中,因为它提供了灵活、高效且强大的文本...

    Python Cookbook 第三版中文v1.0.2.mobi

    10. **性能优化**:提供了许多针对Python性能调优的技巧,如使用Cython或Numba进行性能提升,以及如何分析和优化代码性能。 通过阅读《Python Cookbook》第三版中文版,读者不仅可以提升自己的编程技能,还能了解到...

    python cookbook

    在书中,每个章节(如ch01至ch05)都围绕一个或多个特定主题展开,这些主题通常涉及数据结构的优化、函数式编程、错误处理、模块化设计以及性能调优等方面。下面,我们将深入探讨这些章节可能包含的知识点: 1. **...

    python核心编程

    - **性能优化**:提供Python程序性能调优的最佳实践。 #### 六、数据库操作 - **SQL与NoSQL数据库**:介绍如何使用Python连接并操作关系型数据库(如MySQL、PostgreSQL)和非关系型数据库。 - **数据库API**:讲解...

    Python.Cookbook第2版中文

    - 性能调优的最佳实践。 ### 结论 《Python Cookbook》第二版是一本非常适合有一定Python基础的读者使用的参考书。它不仅涵盖了Python语言本身的各种特性和技巧,还引入了大量的第三方库和工具,帮助读者解决实际...

    PythonCookbook3rd.pdf

    7. **性能优化**:提供了很多关于性能调优的策略,包括使用Cython等工具将Python代码编译为C扩展,以及使用timeit模块来度量代码性能。 8. **字符串和文本处理**:详细介绍了Python的字符串操作,如正则表达式、...

    Pro Python System Administration (2nd ed.)

    13. **第13章:自动MySQL数据库性能调优** - **知识点**:开发Python脚本来自动分析MySQL数据库的性能问题,并尝试优化。 - **应用场景**:数据库优化是提升系统整体性能的关键。 - **关键技术点**: - MySQL...

    md格式编写的良心教程 Python 100天从新手到大师 共100个完整源文件 含课程源代码.rar

    【课程内容列表】 .gitignore PEP8风格指南.md Python编程惯例.md Python参考书籍.md Python之禅.md README.md 更新日志.md 玩转PyCharm.md Day01-15\01.初识Python.md ...项目部署上线和性能调优.md

    OReilly - Python Cookbook.rar_Python Cookbook_cookbook_oreilly_p

    9. **性能优化**:提供了针对Python代码的性能分析和调优策略,包括内存管理和Cython等加速Python的方法。 10. **元编程**:探讨了如何利用Python的动态特性进行元编程,例如通过操作类字典和动态创建类。 ...

    全套百度云教程:python基础+进阶+项目篇 (含Django和Tornado)

    5. **性能优化**:利用Tornado的特点进行性能调优。 6. **部署与运维**:部署应用到生产环境、监控应用状态等。 #### 五、实战项目 理论知识结合实践才能更好地理解和掌握。这部分将通过具体的项目案例来巩固前面...

    Centos+Nginx+UWSGI+Django搭建高性能WEB服务器

    - 性能调优是搭建过程中另一个重要环节,可能包括Nginx的性能优化、uWSGI的参数调优、Django设置的优化等。 ### 结论 搭建高性能的Web服务器涉及到多个组件的协同工作,每一步都要细心配置以保证系统的稳定性和...

    基于python搜索的目标站点内容监测系统源码数据库.docx

    - **数据库设计与优化**:掌握关系型数据库基础知识,了解SQL语句编写技巧及性能调优策略。 - **Web开发框架**:熟悉Django框架的核心概念与应用场景,包括模型定义、视图函数、模板渲染等。 - **异步编程**:运用...

    python cookbook(第3版) 中文 文字完整PDF版

    9. **性能优化**:提供了各种性能调优技巧,包括代码剖析、内存管理、C扩展和Python的`ctypes`库,帮助读者写出更快的Python代码。 10. **系统交互**:讲解了如何使用Python与操作系统进行交互,包括系统调用、文件...

Global site tag (gtag.js) - Google Analytics