【发布时间】:2011-11-22 00:43:34
【问题描述】:
在我的优化任务中,我发现内置的 split() 方法比等效的 re.split() 方法快 40%。
一个虚拟基准(易于复制粘贴):
import re, time, random
def random_string(_len):
letters = "ABC"
return "".join([letters[random.randint(0,len(letters)-1)] for i in range(_len) ])
r = random_string(2000000)
pattern = re.compile(r"A")
start = time.time()
pattern.split(r)
print "with re.split : ", time.time() - start
start = time.time()
r.split("A")
print "with built-in split : ", time.time() - start
为什么会有这种差异?
【问题讨论】:
-
为什么不呢?请不要说“好奇”。您有什么问题通过要求我们阅读
re和str的实现并评论差异来解决。也许您可以阅读实现、评论差异并提出具体问题。 -
我实际上预计速度会增加 %40 以上。简单就是更快。
-
我认为 split() 使用某种正则表达式很明显(?),但它没有......
-
@hymloth 你把 Python 和 Java 搞混了(这是我知道的唯一一种在
String.split()中使用正则表达式的语言) -
@Sven Perl 中有什么东西不使用正则表达式吗?