エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Arrayの特定要素のみをMapする処理を4種類の実装でベンチマーク - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Arrayの特定要素のみをMapする処理を4種類の実装でベンチマーク - Qiita
概要 配列の特定要素のみを抽出し、それに対し一律で同じ処理を適用した配列を取得したい場面というのは... 概要 配列の特定要素のみを抽出し、それに対し一律で同じ処理を適用した配列を取得したい場面というのは、割りとあるかと思います。 そんなとき、array.select { |x| hoge }.map { |x| hogehoge }と書いたり。array.map { |x| hogehoge if hoge }.compactと書くことが多いと思います。 しかし、どちらも 2度ループが回ってしまいます。2回ループが回っても所詮 O(n) ではあるため気にする必要はないかもしれませんが、可読性が大して変わらないなら少しでも早い処理を選びたくなるのが人情……! というわけで、4種類の実装でベンチマークを取ってみました。 ary.select { |a| a.even? }.map { |e| e ** 2 } ary.map { |a| a ** 2 if a.even? }.compact a