不思議なことに、私はこの主題について意見が分かれているのを見てきました。
文字列の配列を取得する場合、たとえば 1000 個の要素で sort メソッドを使用します。どちらが速いでしょうか?文字列の長さが 100 文字の配列か、文字列の長さが 3 文字しかない配列か?
テストしようとしましたが、現時点では Firebug にバグがあり、Date() がランダムに表示されます。
ありがとうございました!
不思議なことに、私はこの主題について意見が分かれているのを見てきました。
文字列の配列を取得する場合、たとえば 1000 個の要素で sort メソッドを使用します。どちらが速いでしょうか?文字列の長さが 100 文字の配列か、文字列の長さが 3 文字しかない配列か?
テストしようとしましたが、現時点では Firebug にバグがあり、Date() がランダムに表示されます。
ありがとうございました!
文字列に含まれる内容によって異なります。異なる文字が含まれている場合、文字列の残りの部分を比較のためにチェックする必要がないため、問題ありません。
たとえば、"abc" < "bca"
ここでは最初の文字だけをチェックする必要がありました。
これの仕様を読むことができます: http://ecma-international.org/ecma-262/5.1/#sec-11.8.5
具体的には:
それ以外の場合、 pxとpyの両方が文字列です
- pyがpxのプレフィックスである場合、 falseを返します。(文字列値pは、 qがpと他の文字列rを連結した結果である場合、文字列値 qのプレフィックスです。rは空の文字列である可能性があるため、任意の文字列はそれ自体のプレフィックスであることに注意してください。)
- pxがpyのプレフィックスである場合、 trueを返します。
- px内の位置kにある文字がpy内の位置kにある文字と異なるように、 kを負でない最小の整数とします。(どちらの String も他方のプレフィックスではないため、そのようなkが存在する必要があります。)
- px内 の位置kにある文字のコード単位値である整数を m とします。
- py内 の位置kにある文字のコード単位値である整数をnとします。
- m < nの場合、 trueを返します。それ以外の場合はfalseを返します。
それは実際には文字列の違いに依存しますが、実際に文字列を比較するよりも比較を行うために呼び出されるものがはるかに遅いという事実により、違いは最小限になると思います。
しかし、最近のブラウザは にいくつかの特別な最適化を使用しているためsort
、速度を上げるためにいくつかの比較を省略しています。そして、これは短い文字列の配列をソートする場合により頻繁に発生します。
参考までに、ベンチマークを作成する場合は、jsPerfなどの信頼できるツールを使用してください。