アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在大学にてC言語でプログラムを組んでいますが、上からサイクル数をカウントして速度評価をしろと言われました。

しかしプログラムについてあまり詳しくなく、参考書などで調べましたが、さっぱりわかりませんでした。

Googleで調べた所、唯一"clock.h"というヘッダファイルと、start_counter();、get_counter();というのを用いているものを見つけましたが、どうやらclock.hは通常のコンパイラには入っておらず使えないとの事でした。
該当するclock.hも見つからず、どうしようもなくなってしまったので、こちらの方に質問させていただく事にしました。

上のclock.hを用いない場合、サイクル数のカウントとはどのようにして行えばいいのでしょうか?

また、上のclock.hの入手先やヘッダファイルソースがあるサイトをご存知でしたらご教授願います。

A 回答 (2件)

本当にサイクル数がほしければ, CPU が持っているカウンタを使わざるをえないような気がするなぁ.


Intel の PentiumPRO 以降なら
http://www.hpcs.is.tsukuba.ac.jp/~msato/pdplab/t …
にある方法で対応できるかも (アセンブリ部分は適宜修正すること).
ちなみに Intel だと「CPU のクロック数」がそのままもらえるけど, AMD の Athlon とかだと「CPU のクロック数」にはならないはずです (FSB で数えたクロック数になるんだったかな?)
DirectX のマルチメディアタイマとか QueryPerformanceCounter() を使えば「それなり高精度」ではありますけど... 「サイクル数」っていわれちゃうと却下だよなぁ.
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
サイクル数での測定というのは(私には)かなり難しいようですね…。

QueryPerformanceCounter()も時間計測の方で用いた事がありますが、やはりサイクル数という意味合いではちょっと違うのでしょうか…。

取り合えず念のために皆様のご提案方法で各自プログラムを組んでおく事にします。
ありがとうございます。

お礼日時:2008/05/15 22:54

time.hのclock( )関数は使えませんか



質問するときはOSやコンパイラを書かれたほうがいいですよ
回答がしやすくなりますので

この回答への補足

回答ありがとうございます。

環境の記載を忘れておりました。
大変失礼しました。

OS…Windows XP Home
コンパイラ…Microsoft Visual studio 2005

です。

大変初歩的な質問なのですが、サイクル数のカウントというのがいまいち理解できておりません。
Clock()関数は、以前秒数計測として用いておりましたが、CLOCKS_PER_SECで割らない場合は、サイクル数のカウントをしているという事になるのでしょうか?

初歩的な質問で申し訳ありませんが、ご教授お願い致します。

補足日時:2008/05/15 17:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!