2022-02-12

anond:20220212120540

言語によるけど

関数引数原則レジスタに入れて渡すことになってて、でも計算結果はほっといても必ず一度レジスタに入るわけだからほとんどのケースでは変わらない

 

forの条件判定に計算式を入れる場合は念のため変数に入れておいた方が安全

単純な式だったら最適化されるから変わらないと思うけど、コンパイラに「forの中身の進行に応じて条件式の結果が変わるかもしれない」と判断されると最適化対象にならず、ループごとに計算し直される可能性がある

特に for ( i=0; getNanika(i) < 100; i++) みたいに条件の中に関数が入ってたら100%毎回関数が実行されるので注意

記事への反応 -
  • 引数に足し算の数値とかを渡すときって変数に代入してから渡すのと計算そのまま引数にするのってパフォーマンスかわる? 言語によるかもしれないけどTaskとかでその処理がしばらく続...

    • 言語によるけど 関数の引数は原則レジスタに入れて渡すことになってて、でも計算結果はほっといても必ず一度レジスタに入るわけだから、ほとんどのケースでは変わらない   forの条...

      • ありがとう! 計算されそうならみたいな条件付きで変わったりするんだ 変わりそうなときは代入しておく ありがとう

    • CとかJavaならコンパイルしたもの確認するのが正しいんだろうなぁ…

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

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