JavaScript の Array と Set の検索速度の比較

2023-05-05

はじめに

JavaScript における Array と Set で検索速度がどの程度違うのか調べてみました。

検証コード

Gist に置いています。

https://gist.github.com/mryhryki/6d72283c7187cd7f7262bbd930a626c5

Array は includes()、Set は has() を使っています。

結果

私の環境では以下のような結果になりました。

Array/Set Value Type Size Search Count Time (ms)
array integer 1000 100 0ms
array integer 1000 1000 0ms
array integer 1000 10000 4ms
array integer 10000 1000 4ms
array integer 10000 10000 51ms
array integer 10000 100000 473ms
set integer 1000 100 0ms
set integer 1000 1000 0ms
set integer 1000 10000 1ms
set integer 10000 1000 0ms
set integer 10000 10000 0ms
set integer 10000 100000 4ms
array uuid 1000 100 1ms
array uuid 1000 1000 4ms
array uuid 1000 10000 48ms
array uuid 10000 1000 38ms
array uuid 10000 10000 481ms
array uuid 10000 100000 4762ms
set uuid 1000 100 0ms
set uuid 1000 1000 0ms
set uuid 1000 10000 0ms
set uuid 10000 1000 0ms
set uuid 10000 10000 0ms
set uuid 10000 100000 4ms

まとめ

Set はやはり性質的にかなり高速であることが分かります。
Array は特に文字列で比較すると時間がかかるようです。
要素数が大きい場合や、何度も検索する用途の場合はやはり Set を使う方が良いということが分かりました。