質問: (v) => process.stdout.write(`${v}\n`); numbers.forEach(log); console.timeEnd('パターン5'); //パターン5': 32368.805ms ```
回答: JavaScriptでは関数適用は意外とパフォーマンスのダメージは少ないのです。 シンプルな処理ならJITコンパイラが効きますからね。 他の箇所で質問文のコードのパフォーマンスが出ない箇所がありますね。 * for文内の`i++`: JSではインクリメントはプラスして式として返す2手必要な単なるエミュレートなので高コスト * console.log: 文字列以外を渡してもパースしたり色々してくれるリッチな動作をするのでそれに付随して高コストに この辺のダメージがデカイんで、質問文の検証は想定とちょっと違う感じになってますね。 まぁ、console.log云々は不甲斐ない速度ですが全部同条件なので影響はしませんけどね。 再テストとして下記を修正してもう一度行ってみてください。 ``` for (var i = 0; i < max; i++) // ↓ for (var i = 0; i < max; i = (i+1)|0) console.log // ↓ process.stdout.write(`numbers[i]¥n`) ``` 参考記事: JavaScriptのループはどれが一番高速なのか