実行速度の違いについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たか

実行速度の違いについて

#1

投稿記事 by たか » 17年前

C言語を初めて三ヶ月のたかと申します。

現在、テキストファイルから文字列を読み込んで表示する。
というプログラムを作っています。
文字列の部分ではなく実行速度について質問があります。

添付したソースファイルではif文かswitch文、どちらが早いのでしょうか?
プロセッサ時間を取得して計算してみましたが、短い処理なので上手くいきませんでした。

よろしくお願いします。
また、プログラムにミスがあればご指摘おねがいします。

開発環境
Visual C++ 2008 Express Edition

たかぎ

Re:実行速度の違いについて

#2

投稿記事 by たかぎ » 17年前

最適化次第かと思います。

最適化がまったく働かなければ、ifの方が遅くなります(一般論ではなく、今回の場合の話です)。
なぜなら、buf[count]の評価回数が増えるからです。
普通に最適化すれば、どちらも優位な差は出ないでしょう。

可読性を考えると、switchの方が若干ましな気もするので、最適化なしの場合でも効率がよいことですし、switchにしておけばよい気がします。

たか

Re:実行速度の違いについて

#3

投稿記事 by たか » 17年前

最適化がなしの状態では、switchの方が早いのですね。
評価回数が増える・・というのは、
switch文のように直接飛ばずにひとつづつif文で処理しているということ、ですよね?
case EOF:
case '\n':
case ',':
switch文で上のようにしているので無駄があるかなとか思っていました。
ありがとうございました。

たかぎ

Re:実行速度の違いについて

#4

投稿記事 by たかぎ » 17年前

一度、switch文をifとgotoで書き直してみるとよく理解できるようになります。
また、||や&&の短絡評価についても、同じくifとgotoで書き直してみてください。

手前味噌ですが、
http://www.kijineko.co.jp/tech/creintro ... -goto.html
を紹介しておきます。

たか

Re:実行速度の違いについて

#5

投稿記事 by たか » 17年前

丁寧にありがとうございます。
リンク先のページでしっかり理解できました。

閉鎖

“C言語何でも質問掲示板” へ戻る