ベストアンサー1
見てからECMA-262ネイティブ実装はもっとやる単純な自己実装よりも、エラー処理と機能の点で優れています。
たとえば、map
MDN のポリフィル実装を確認してください。配列.プロトタイプ.マップ()これは、ECMA-262 で指定されているものと同じアルゴリズムに基づいています。このアルゴリズムを使用するように例を更新すると、ネイティブ実装がわずかに高速化されます。マップネイティブと実装。
また、map
ネイティブ コードと提供されたラムダ関数の間を行ったり来たりするため、テストに最適な例ではない可能性があります。
ネイティブ関数の方がパフォーマンスが良いと期待していましたconcat
。しかし、ECMA-262を見ると、もっとやるセクション 15.4.4.4 のアルゴリズムを見ると、いくつかの追加のケースが処理されていることがわかります。たとえば、配列と他の型の複数の引数を組み合わせる場合などです。
[1, 2, 3].concat([4, 5, 6], "seven", 8, [9, 10]);
戻り値
[1, 2, 3, 4, 5, 6, "seven", 8, 9, 10]
最後に、これらは非常に基本的なアルゴリズムであることに注意してください。このようなアルゴリズムを巨大なデータ セットで実行したり、何千回も連続して実行したりすると、一方が他方よりも大幅に高速であるように見える場合があります。ただし、数千回の反復で 2、3 の追加の安全性チェックを実行するだけでも、チェックを行わないアルゴリズムよりも大幅に遅くなる可能性があります。計算操作を数えてください。追加のエラー処理と機能によってループ内のコード行数が 2 倍になると、遅くなるのは当然です。