你几乎可以检查通过简单的东西如Python的日期时间库使用的算法大概时间,例如:
import datetime
start = datetime.datetime.now()
# insert your code here #
end = datetime.datetime.now()
result = end - start
print(result)
的事情是,与蟒蛇算法3000行时间消耗找到这句话是低配两种方法。但是,从我的测试中,如果文本位于靠近文本末尾,则第一种方法会快一点。我测试了一个超过3000行的454kb文本文件,大部分行都是整段。 (下)的数字约为0.09s。但是,我必须提及,如果没有用于匹配字符串开头的^ regex符号,完成任务的时间仅为0.04s。
with open(filename, 'r') as f:
match = re.search(phrase, f.read())
与0.12S为
with open(filename, 'r') as f:
i = 0
for line in f:
i += 1
match = re.match(phrase, line)
if match:
break;
这里需要休息,否则匹配的对象将是最后一次出现发现我用来找出其中线,我们发现了比赛。因为.start和.end方法的位置,否则将相对于我们所在的行。但是,在搜索方法中,默认情况下,您可以通过.start和.end匹配对象方法获取匹配位置。
然而在我的测试案例中,第一次出现接近.txt文件的末尾,所以如果接近开始第二个方法将占上风,因为它将停止在该行搜索,而第一个方法的时间消耗保持不变。
除非你正在做这个竞争性编码(无论如何Python可能不是最好的选择),否则这两种方法都需要很少的时间。
“大”有多大? –
那么,如果你只需要第一次发生 - 在字符串中读取字符串并在找到你的子字符串后中断会最有可能节省你一些时间。 – konart
该行是否以字符串开头(如您的re指示),并且是硬编码的字符串还是模式?一般来说,如果它是一个固定的字符串,那么使用字符串方法是最好的选择,而不是're'。 – cdarke