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 を使う方が良いということが分かりました。