ページ 11

どちらのプログラムが重いですか?

Posted: 2015年8月03日(月) 19:05
by 大学生
1と2のどちらのプログラムが重いか教えてください。また、その見分け方なども知りたいです。
ちなみに、このような内容の薄いプログラムは重いも軽いもあまりないですか??なければ、こっちで書けた方がいいなどというのもあれば教えてください。説明の仕方が下手ですみません(^^;)

コード:


//その1

#include <stdio.h>

int main()
{
    int count1;
    int count2;
    int ary[3][3] = {
        1 , 5 , 10 ,
        50 , 100 , 500 ,
        1000 , 5000 , 10000
    };
    
    for(count1=0; count1<3; count1++){
        for(count2=0; count2<3; count2++){
            printf("ary[%d][%d] = %d\n", count1, count2, ary[count1][count2]);
        }
    }
    
    return 0;
}



コード:


//その2

#include <stdio.h>

int main()
{
    int count1 = 0;
    int count2 = 0;
    int ary[3][3] = {
        1 , 5 , 10 ,
        50 , 100 , 500 ,
        1000 , 5000 , 10000
    };
    
    while(1) {
        printf("ary[%d][%d] = %d\n" , count1 , count2 , ary[count1][count2]);
        count2++;
        if (count2 == 3) {
            count1++;
            count2 = 0;
        }
        if (count1 == 3) break;
    }
    
    return 0;
}


Re: どちらのプログラムが重いですか?

Posted: 2015年8月03日(月) 19:42
by みけCAT
大学生 さんが書きました:1と2のどちらのプログラムが重いか教えてください。また、その見分け方なども知りたいです。
実験はしていませんが、計算量のオーダーは同じですし、重さはほとんど変わらないでしょう。
要素数を増やしても、出力の方がボトルネックになりそうです。
大学生 さんが書きました:ちなみに、このような内容の薄いプログラムは重いも軽いもあまりないですか??なければ、こっちで書けた方がいいなどというのもあれば教えてください。
単にC言語のプログラムを書くなら素直なその1の方がいいと思いますが、
アセンブリ言語への移植を考えるならその2の書き方もいいかもしれません。

Re: どちらのプログラムが重いですか?

Posted: 2015年8月03日(月) 21:53
by box
大学生 さんが書きました:1と2のどちらのプログラムが重いか教えてください。
「重い」の定義は何ですか?

# プログラムには重さはないので… なんて言ったら怒られるんだろうな、きっと。

Re: どちらのプログラムが重いですか?

Posted: 2015年8月04日(火) 00:30
by 大学生
>みけCATさん
丁寧に答えてくださりありがとうございます。
やはり、この程度のプログラムではどちらで書いてもかわらないのですね(^^)
ただ単に書く分にはその1の方が自分もやりやすいと思ったので1の方で書くようにします。ありがとうございました!

>boxさん
あいまいな質問してすみません(^^;)
同じ実行結果が得られる2つのプログラムでも処理が軽く済むのと処理が重いのがあると聞いたので今回はこのような質問をさせていただきました。