[過去ログ] Qiita 3 - キータぞ、来たぞ、キータだぞー (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
312: 2023/08/13(日)13:52 ID:bmBefS74(1/2)調 AAS
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;
}
}
内容が変わろうが変わるまいが常にメモリへの書き込みが行われるよう変更したらどうなるか。
313: 2023/08/13(日)13:57 ID:bmBefS74(2/2)調 AAS
gcc 12.2.0に-O2を指定
hoge: 0.044001
piyo: 0.060001
hogera: 0.052001
https://wandbox.org/permlink/Na7RxYGEttdpuCnR
clang 15.0.7に-O2を指定
hoge: 0.032001
piyo: 0.032002
hogera: 0.031992
https://wandbox.org/permlink/1FZCQD2WsnbvifWw
hoge()の実行時間はpiyo()やhogera()と大差なくなる。
if文の使用がhoge()が遅かった原因ではない。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s