質問 |
||
| QNo.4024356 | サイクルカウントの方法 | |
|---|---|---|
| 質問者:Peace2008 |
現在大学にてC言語でプログラムを組んでいますが、上からサイクル数をカウントして速度評価をしろと言われました。 しかしプログラムについてあまり詳しくなく、参考書などで調べましたが、さっぱりわかりませんでした。 Googleで調べた所、唯一"clock.h"というヘッダファイルと、start_counter();、get_counter();というのを用いているものを見つけましたが、どうやらclock.hは通常のコンパイラには入っておらず使えないとの事でした。 該当するclock.hも見つからず、どうしようもなくなってしまったので、こちらの方に質問させていただく事にしました。 上のclock.hを用いない場合、サイクル数のカウントとはどのようにして行えばいいのでしょうか? また、上のclock.hの入手先やヘッダファイルソースがあるサイトをご存知でしたらご教授願います。 |
|
困り度:
|
||
| 質問投稿日時: 08/05/15 16:19 |
||
回答良回答20pt |
|
| ANo.2 | 本当にサイクル数がほしければ, CPU が持っているカウンタを使わざるをえないような気がするなぁ. Intel の PentiumPRO 以降なら http://www.hpcs.is.tsukuba.ac.jp/~msato/pdplab/timer-collection/#PPro にある方法で対応できるかも (アセンブリ部分は適宜修正すること). ちなみに Intel だと「CPU のクロック数」がそのままもらえるけど, AMD の Athlon とかだと「CPU のクロック数」にはならないはずです (FSB で数えたクロック数になるんだったかな?) DirectX のマルチメディアタイマとか QueryPerformanceCounter() を使えば「それなり高精度」ではありますけど... 「サイクル数」っていわれちゃうと却下だよなぁ. |
|---|---|
| 回答者:Tacosan | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/15 20:30 |
|
| |
| この回答へのお礼 | 回答ありがとうございます。 サイクル数での測定というのは(私には)かなり難しいようですね…。 QueryPerformanceCounter()も時間計測の方で用いた事がありますが、やはりサイクル数という意味合いではちょっと違うのでしょうか…。 取り合えず念のために皆様のご提案方法で各自プログラムを組んでおく事にします。 ありがとうございます。 |
回答良回答10pt |
|
| ANo.1 | time.hのclock( )関数は使えませんか 質問するときはOSやコンパイラを書かれたほうがいいですよ 回答がしやすくなりますので |
|---|---|
| 回答者:php504 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/15 16:32 |
|
| |
| この回答への補足 | 回答ありがとうございます。 環境の記載を忘れておりました。 大変失礼しました。 OS…Windows XP Home コンパイラ…Microsoft Visual studio 2005 です。 大変初歩的な質問なのですが、サイクル数のカウントというのがいまいち理解できておりません。 Clock()関数は、以前秒数計測として用いておりましたが、CLOCKS_PER_SECで割らない場合は、サイクル数のカウントをしているという事になるのでしょうか? 初歩的な質問で申し訳ありませんが、ご教授お願い致します。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |