2017-02-15 4 views
0

私はいくつかの文字列が別の文字列(サブ)が含まれているかどうかを確認する必要があるので、 は、誰かがこれの1が速く実行している私に言うことができます。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/fastestway-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に提供したいと思っていましたが、ログを表示するツール(プライベートユニットテスト、クイックパフォーマンステストなど)最も簡単な性能テストパターン。 –

関連する問題