2017-02-15 86 views
0

我需要檢查,如果某些字符串包含另一個字符串(子),以便能 有人告訴我其中的這個執行得更快:什麼解決方案在JavaScript中搜索子串的速度更快?

someString.includes(thisSubstring) or 
someString.indexOf(thisSubstring) !== -1 

這取決於從瀏覽器?有沒有更快的解決方案?

+1

衡量自己。 –

+0

轉到https://jsfiddle.net/,創建一個字符串,用一個重複n次的計時器創建一個循環並執行n包含檢查。然後用一個計時器執行另一個循環,執行n'indexof'檢查。然後回到這裏,把小提琴和你的回答放在哪一個更快。 – Forklift

+0

使用搜索。這是一個重複的http://stackoverflow.com/questions/5296268/fastest-way-to-check-a-string-contain-another-substring-in-javascript – Zefick

回答

3

indexOf更快,但您可以輕鬆地自行運行這些測試。

在未來你可以使用下面的模式來衡量執行時間:

var str1 = "nananananaananana Catman!"; 
 
var str2 = "Catman!"; 
 
var max = 10000000; 
 
var t = new Date(); 
 
for(var i = 0; i < max; i++) { 
 
    str1.indexOf(str2) >= 0; 
 
} 
 
console.log("indexOf",new Date() - t); 
 
t = new Date(); 
 
for(var i = 0; i < max; i++) { 
 
    str1.includes(str2); 
 
} 
 
console.log("includes",new Date() - t); 
 
t = new Date(); 
 
for(var i = 0; i < max; i++) { 
 
    str1.indexOf(str2) >= 0; 
 
} 
 
console.log("indexOf",new Date() - t); 
 
t = new Date(); 
 
for(var i = 0; i < max; i++) { 
 
    str1.includes(str2); 
 
} 
 
console.log("includes",new Date() - t);

+0

爲什麼不[https://jsperf.com/ ](https://jsperf.com/faq#what)? – Prusse

+1

@Prusse如果這是一個複雜度較高的問題,我可能會這樣做,但是通過這樣簡單的操作,我想通過展示這些簡單的東西給OP提供工具來記錄她/他喜歡的事情(私人單元測試,快速性能測試等)最簡單的性能測試模式。 –

相關問題