[過去ログ]
Qiita 3 - キータぞ、来たぞ、キータだぞー (1002レス)
Qiita 3 - キータぞ、来たぞ、キータだぞー http://mevius.5ch.net/test/read.cgi/tech/1685235361/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
286: デフォルトの名無しさん [sage] 2023/08/11(金) 15:29:01.99 ID:Dz1zKJwc gcc 12.2.0に-O2を指定 hoge: 0.279982 piyo: 0.059988 hogera: 0.051996 https://wandbox.org/permlink/cLGAj1OcfqmjdJeZ clang 15.0.7に-O2を指定 hoge: 0.283996 piyo: 0.036019 hogera: 0.028001 https://wandbox.org/permlink/jEA3G3XMSKeCUKbZ clang 15.0.7に-O2 -march=nativeを指定 hoge: 0.028001 piyo: 0.028001 hogera: 0.027980 https://wandbox.org/permlink/cMJSCT2nnvyhpSpD http://mevius.5ch.net/test/read.cgi/tech/1685235361/286
289: デフォルトの名無しさん [sage] 2023/08/11(金) 22:03:23.82 ID:n9doW6N2 >>286 if文を使うと10倍遅くなるのが衝撃的だ 今後はif文を無くせる場合は無くそうと思う if文の中で代入してるだけならコンパイラが頑張ってcmoveを使って分岐を避けてくれればいいのにね http://mevius.5ch.net/test/read.cgi/tech/1685235361/289
298: デフォルトの名無しさん [sage] 2023/08/12(土) 16:53:18.46 ID:wD60IGH3 >>292 if文を無くせる場合があるというのが>>253の記事 そしてif文を無くした方が10倍速くなる場合を示してくれたのが>>286の測定 何がトレードオフになっているかというと if文があるとCPUは条件分岐によるパイプラインの乱れのペナルティを喰らう if文がないとCPUは条件に関わらず同じ命令群を実行する (=条件の片方では無意味なことをする可能性がある) したがってif文を無くせる場合はまず大雑把に言うとif文の(条件部ではなく)実行部がある程度短く実行サイクルも短いこと 例えば軽い数値の演算やその代入などならばif文を無くせる場合に合致することが多いだろう http://mevius.5ch.net/test/read.cgi/tech/1685235361/298
312: デフォルトの名無しさん [sage] 2023/08/13(日) 13:52:34.26 ID:bmBefS74 if文をなくすのが高速化に繋がってると解釈してる人がいるようなので補足。 >>286の投稿でhogeの結果が極端に悪いのは条件分岐命令が生成されていることが原因だが条件分岐命令が生成されているのはif文を使用しているからではない。条件によってメモリへの書き込みが行われたり行われなかったりするロジックのためである。 試しにhoge()の実装を void hoge(int n, int num[n], int deleteNum) { for (int i = 0; i < n; i++) { int x = num[i]; if (x == deleteNum) { // deleteNumで指定した要素を0にする x = 0; } num[i] = x; } } 内容が変わろうが変わるまいが常にメモリへの書き込みが行われるよう変更したらどうなるか。 http://mevius.5ch.net/test/read.cgi/tech/1685235361/312
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.034s