C++相談室 part166 (569レス)
前次1-
抽出解除 レス栞

392
(1): デフォルトの名無しさん (ワッチョイ 0175-Is3k) [] 2025/06/20(金) 09:01:01.71 ID:BxPKXrVj0(1/4) AAS
>>390
390(2): デフォルトの名無しさん (ワッチョイ b603-dswa) [sage] 2025/06/20(金) 01:58:37.52 ID:t+D0H6HX0(1) AAS
>>388
どういうこと?
演算しないと結果は出ないのに、演算せずにどうやって結果だすの?
変数が関わらない定数だけの演算なら、コンパイルの時点で計算しても結果同じだよね
だから実行時ではなくコンパイルの時点で演算した結果を使う
初歩の最適化の一つ

元の式については左辺に変数が入ってくるから多分最適化はされない
a=b/10*10みたいなのを想定してると思うけど、この場合は最終的に
a=b/10
c=a*10と分解して計算されるので、どちらにも変数が関わってしまい最適化対象外だと思う
a=b*(10/10)みたいな、計算優先度的に変数が関わらないところができれば最適化される

この手の手動最適化なんて考えなくなって久しいから間違ってたらすまぬ
396
(2): デフォルトの名無しさん [sage] 2025/06/20(金) 10:45:39.27 ID:4xHX9xY70(1/2) AAS
>>392
ここまでの話で「定数だけの演算なら」と何で言い出すのか理解できないけど
>>375
375(5): デフォルトの名無しさん (ワッチョイ 1202-2JrO) [sage] 2025/06/19(木) 20:50:34.90 ID:Cdln7j8I0(1) AAS
整数型の変数を10で割ってから10掛けたら元の数字の一の位を0にした数が得られるはずだけど
この計算が最適化とかで除かれない保証ってあるの
では「整数型の変数を」と言っているわけだし
まあそれはおいておいても「コンパイルの時点で計算しても」←演算してんじゃんって俺は思うわけ

>>393
393(1): デフォルトの名無しさん (ワッチョイ 71a6-Y+Ow) [sage] 2025/06/20(金) 09:03:31.40 ID:LoawS5uh0(1) AAS
変数があっても結果が同じ計算式で置き換えられるならそうしてくる
10倍よりも8倍+2倍のほうが速い、とかで
それ自体は問題なくね?
157 を 10で割って15
これに10を掛けるのでなく15*8+15+2 でも最適化の影響はないだろ?
割り算の方でそれが起きるなら問題だけど、>>378
378(1): デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/19(木) 21:05:34.31 ID:oyTCj2/DM(2/5) AAS
>>375
最適化では結果は変わらない。
つまり、ちゃんと10で割って、ちゃんと10を掛ける。
10を掛ける方は、マシン語の乗算命令は使われず、
もっと速い命令に置き換えられることが有るが、結果は同じ。
の人の話では起きないようだけど
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.152s*