你幾乎可以檢查通過簡單的東西如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