【发布时间】:2012-06-30 19:00:14
【问题描述】:
我有接下来的 2 块代码:
def replace_re(text):
start = time.time()
new_text = re.compile(r'(\n|\s{4})').sub('', text)
finish = time.time()
return finish - start
def replace_builtin(text):
start = time.time()
new_text = text.replace('\n', '').replace(' ', '')
finish = time.time()
return finish - start
我用文本参数调用这两个函数(一个网页的源代码约为 500kb)。
我以为replace_re() 会快得多,但结果是下一个:
-
replace_builtin()~ 0.008 秒 -
replace_re()~ 0.035 秒(几乎 4.5 倍慢!!!)
这是为什么呢?
【问题讨论】:
-
为什么正则表达式不会更慢?正则表达式引擎比遍历字符串和检查匹配要昂贵得多。
-
+1 用于分析,以及显示您的代码和结果。这是一个合理的问题,即使许多回答都将其视为常识。