[JavaScript] Array.includes vs Array.indexOf パフォーマンス比較

JavaScript の Array.includes と Array.indexOf の実行時間を jsPerf で確認してみました。

JavaScript

背景 Array.includes vs Array.indexOf どっちが速い?

JavaScript の Array.includes と Array.indexOf はどちらが高速か調べてみた内容をご紹介します。

結果 Array.includes が最速

テスト環境 Chrome 79.0.3945 / Mac OS X 10.14.6

Array.includes vs Array.indexof

Node.js 8.x >= でも Array.includes の方が速い

以下の GitHub issue によると Node.js 8.x では Array.indexOf より Array.includes の方が高速とのことでした。

I’ve tested it on LTS version (code). Here is the result:

Node.js 6.17.0 (indexOf is 3x faster):
Array#indexOf x 7,221,953 ops/sec ±2.65% (79 runs sampled)
Array#includes x 1,972,658 ops/sec ±2.02% (84 runs sampled)
Fastest is Array#indexOf

Node.js 8.15.1 (same):
Array#indexOf x 7,340,047 ops/sec ±4.30% (75 runs sampled)
Array#includes x 8,899,792 ops/sec ±0.44% (90 runs sampled)
Fastest is Array#includes

Node.js 10.15.3 (includes is 80x faster):
Array#indexOf x 11,671,636 ops/sec ±4.92% (73 runs sampled)
Array#includes x 861,062,120 ops/sec ±0.51% (91 runs sampled)
Fastest is Array#includes

Node.js 11.11.0 (includes is 80x faster):
Array#indexOf x 10,776,587 ops/sec ±4.10% (78 runs sampled)
Array#includes x 854,403,715 ops/sec ±0.60% (88 runs sampled)
Fastest is Array#includes

引用元: lib: prefer using Array#includes instead of Array#indexOf · Issue #26568 · nodejs/node

以上、より速い Array.includes を使っていきたい、現場からお送りしました。