2021-01-25

anond:20210125102550

コンパイラ次第ってことでしょ

基本的な奴と違ってインデントを毎回生成するようなバイナリに変換されることもあるからコンパイラ事情を予想してFor文と同じバイナリに変換されるように書ければ早い

最も単純なForeachならこのバイナリになるけどちょっと変なのを挟んだりするとすぐにインデント生成されるからパフォーマンスが落ちる

記事への反応 -
  • forのほうがパフォーマンスいいってことは無い foreach使うべきなのは間違いない ただそこまでキレられるのは異常というか、派遣・SESを奴隷扱いする文化がある会社だろうな

    • 言語によるが4倍ぐらいforのほうが早いぞ

      • 言語によるが4倍ぐらいforeachのほうが早いぞ。 JAVA C# 系は。

        • 処理内容でFor文と同じ速度になることはあっても原初的なFor文の処理速度超えるわけないだろ 余計な処理付け足してるのにパフォーマンス上がらねえよ

          • 言語によるがforeachはただのforのエイリアスだぞ。Perlでは。

            • コンパイラ次第ってことでしょ 基本的な奴と違ってインデントを毎回生成するようなバイナリに変換されることもあるからコンパイラの事情を予想してFor文と同じバイナリに変換される...

            • やはり、時代は Perl だな。 Perl の先進性にはいつも頭が下がる。

            • そういや関数型言語マウント勢とか 再帰懐古勢とか来てないな

          • 添字によるアクセスが高速にできないデータ構造もある foreachには、データ構造による最適なアクセス方法の違いを吸収してくれる意味もあるんだぞ

            • それプログラマの能力が低いだけじゃん 適切な処理を知ってれば常にFor文のほうが早いよ

              • 適切な処理を書けない言語では?

                • バイナリに変換できるってことは書けるんだよ 能力が低ければForeachでいいだろうな コンパイラが自動でやってくれるし

          • PHPの場合はデータ構造が特殊で、すべてが連想配列なんだよ。 for で間接的にアクセスするより、foreach での直接アクセスのほうが速くなる。 そいう言語も世の中にはあるってこと。

            • つうかfor文が ・初期化(これは最初に一回) ・インクリメント ・終端判定 しているのに比べてforeachは ・「次」ってメソッドを呼び出す ・次が無ければ終了 なんだから割とシンプルな...

            • それ計測したんか?

        • 話にならんからお前が参考にしたソースを出してみろ

          • 例えば、 https://qiita.com/130cmWolf/items/0a4ecaa92d0ef82d7c7a とか。

            • ああ、すまん foreachのほうが早いよな (ランダムアクセスができる構造(配列とか)なら同等、それ以外(LinkedListとか)ならforeachが圧倒的に早い)

      • あり得ないと思うが、どの言語のどのデータ構造の話か、教えてくれ (foreach関係なくループのたびにオブジェクト作ってるとかいうオチじゃないだろうな)

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん