这篇文章翻译自《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
最快的!!
分享到:
相关推荐
06-正则表达式(python和linux高级编程阶段 代码和截图)06-正则表达式(python和linux高级编程阶段 代码和截图)06-正则表达式(python和linux高级编程阶段 代码和截图)06-正则表达式(python和linux高级编程阶段 ...
Python-24-正则表达式.md
第11.25节 Python正则表达式编译re.compile及正则对象使用.rar
python之常用正则表达式.pdfpython之常用正则表达式.pdfpython之常用正则表达式.pdfpython之常用正则表达式.pdfpython之常用正则表达式.pdfpython之常用正则表达式.pdf
Python培训基础入门教程-正则表达式-讲解全面 共29页.pdf
python正则表达式_深入浅出 python正则表达式_深入浅出
Python正则表达式操作指南 Python正则表达式操作指南 Python正则表达式操作指南
清华大学精品Python学习PPT课件-第5章 Python正则表达式.pptx 清华大学精品Python学习PPT课件-第6章 Python函数.pptx 清华大学精品Python学习PPT课件-第7章 Python模块.pptx 清华大学精品Python学习PPT课件-第8章 ...
一个描述全部python正则方法,正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。 ...
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这 些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一 种过滤逻辑(可以用来做检索,截取或者替换...
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。 ...
python正则表达式详细图 python正则表达式详细图 python正则表达式详细图
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理...
例如,要匹配字符串"123"中的整数,可以使用如下代码: import re pattern = r'\d+' string = '123' result = re.match(pattern, string) python-数字正则表达式全文共3页,当前为第1页。 print(result.group()) ...
python正则表达式使用指南,中英文对照,简洁易懂,个人觉得非常好,能很快学会试用正则表达式。
re --- 正则表达式操作 — Python 3.10.0a4 文档.pdf
PPT 讲述了正则表达式的使用方式以及如何使用python来操作正则表达式,内容简洁实用,适合平时查询,也适合PPT演讲使用~
python 零基础学习篇-10正则匹配-正则表达式 Regular Expression、树形模型(树形匹配)-intro bs4、爬虫.zip
Pyregex是一个开源在线的Python正则表达式编辑器、测试器
刘永富老师写的python正则表达式工具,使用方便