[過去ログ] Qiita 3 - キータぞ、来たぞ、キータだぞー (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
253(4): デフォルトの名無しさん [sage] 2023/08/08(火) 19:36:07.20 ID:bRo0TWoK(1/2) AAS
C言語における「bool型へのキャスト」が無限の(悪用)可能性を秘めている理由
https://webcache.googleusercontent.com/search?q=cache:ED5C8TAFrNYJ:https://qiita.com/wantun/items/4574049283e1cd7d50cf
程度低い記事だなあ、これはツッコまれるの不可避だわと思っていたら消えていた。
260: デフォルトの名無しさん [sage] 2023/08/10(木) 16:12:44.88 ID:RFVZcdoC(1) AAS
>>253
考え自体は正しい
条件分岐はパイプラインを乱す
条件分岐とならないコードが生成されることが望ましい
しかし多くのケースではコンパイラのコード生成に任せることができる
今回のケースならばif文のままでも条件ムーブ(CMOVcc)命令などが生成され条件分岐とならないだろう
ソースコードの可読性からもif文のままが好ましい
ただしもっと複雑なケースで複数の条件分岐をなくして演算のみにできる場合もある
そしてコンパイラ任せではそのようなコード生成が無理な場合もある
その場合はベンチ測定比較すれば有意な差が出るためそれは正しい判断となる
265: デフォルトの名無しさん [sage] 2023/08/10(木) 19:51:41.79 ID:UyoKACkM(1) AAS
したがって>>253の記事は全面的に正しい
bool値を数値演算として使うことを積極的に推奨する
266: デフォルトの名無しさん [sage] 2023/08/10(木) 19:57:21.15 ID:c2H9n5TK(5/9) AAS
> したがって>>253の記事は全面的に正しい
boolへのキャストなんてしねーよ馬鹿か
298(1): デフォルトの名無しさん [sage] 2023/08/12(土) 16:53:18.46 ID:wD60IGH3(1) AAS
>>292
if文を無くせる場合があるというのが>>253の記事
そしてif文を無くした方が10倍速くなる場合を示してくれたのが>>286の測定
何がトレードオフになっているかというと
if文があるとCPUは条件分岐によるパイプラインの乱れのペナルティを喰らう
if文がないとCPUは条件に関わらず同じ命令群を実行する (=条件の片方では無意味なことをする可能性がある)
したがってif文を無くせる場合はまず大雑把に言うとif文の(条件部ではなく)実行部がある程度短く実行サイクルも短いこと
例えば軽い数値の演算やその代入などならばif文を無くせる場合に合致することが多いだろう
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s