[過去ログ] Qiita 3 - キータぞ、来たぞ、キータだぞー (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
312: デフォルトの名無しさん [sage] 2023/08/13(日) 13:52:34.26 ID:bmBefS74(1/2) AAS
if文をなくすのが高速化に繋がってると解釈してる人がいるようなので補足。

>>286
286(3): デフォルトの名無しさん [sage] 2023/08/11(金) 15:29:01.99 ID:Dz1zKJwc(3/4) AAS
gcc 12.2.0に-O2を指定
hoge: 0.279982
piyo: 0.059988
hogera: 0.051996
外部リンク:wandbox.org

clang 15.0.7に-O2を指定
hoge: 0.283996
piyo: 0.036019
hogera: 0.028001
外部リンク:wandbox.org

clang 15.0.7に-O2 -march=nativeを指定
hoge: 0.028001
piyo: 0.028001
hogera: 0.027980
外部リンク:wandbox.org
の投稿で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;
  }
}
内容が変わろうが変わるまいが常にメモリへの書き込みが行われるよう変更したらどうなるか。
313: デフォルトの名無しさん [sage] 2023/08/13(日) 13:57:12.40 ID:bmBefS74(2/2) AAS
gcc 12.2.0に-O2を指定
hoge: 0.044001
piyo: 0.060001
hogera: 0.052001
外部リンク:wandbox.org

clang 15.0.7に-O2を指定
hoge: 0.032001
piyo: 0.032002
hogera: 0.031992
外部リンク:wandbox.org

hoge()の実行時間はpiyo()やhogera()と大差なくなる。
if文の使用がhoge()が遅かった原因ではない。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s