あと味

たくさん情報を食べて、たくさん発信すると、あとになって味わい深い。

簡易的なuniqメソッド(文字列限定)を書いたので、underscore.jsのuniqメソッドとベンチマーク取ってみました

グリモンを書いてて、uniqメソッドを自前で作ろうと思ったのですが、少し面白い方法を見つけたので、jsPerfでベンチマークしてみました。文字列専用ですが。

自前のuniqメソッド

オブジェクトを構築する際に、キーはひとつのオブジェクトに対してユニークになるので、適当な値を突っ込んでオブジェクトを構築し、最後にキーだけ取り出す感じです。reduceを使えば、4行程度で書けます。

underscore.jsのuniqとの比較ベンチマーク

underscore.jsのuniqメソッドと比較しました。第2引数の最適化オプションの有り無しでも比較しています。

こんな感じになります。

string-uniq · jsPerf

まとめ

文字列限定ですが、underscore.jsのuniqメソッドで、最適化オプションなしの状態より速い場合が多いようです。

ただ、Google Chromeでは、underscore.jsの最適化オプションがfalseでも、今回作ったuniqメソッドよりも速いので、実用的かどうかは微妙なところです。

Object.keysメソッドが遅いのかな?それとも、バイナリサーチが得意なのかな?よくわかりません。

追記

@hokaccha さんとのやり取り。

悔しいですけど、for速いですね。