ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Win32 経過時間

2006-08-22 15:28:43 | PG(言語比較)

プログラミング言語比較で、Win32の経過時間の計り方を追加。

  • time()はC言語の標準だが、秒単位。
  • GetTickCount()は精度があまりよくないらしい(数ミリ秒単位)。
  • timeGetTime()はマルチメディアタイマー。
  • QueryPerformanceCounter()はマイクロ秒単位(に近い)。が、OSによって使えたり使えなかったりするらしい。

使用したい場面によるのは当然としても、他の言語では実際の精度が分からなくても選択肢が少ない(例えばJavaならSystem#currentTimeMillis()を使うでしょ?Dateでもいいけど、中身は同じな気がする)ということを考えれば、普通はGetTickCount()を使っとけば無難な気がする。


time()は基点となる日付からの経過時間を秒単位で返すが、戻り値はtime_t型で実体はlong(32bit)。したがって2038/01/19 03:14:07までしか表せないのは有名な話。
でも実行時間を知りたいだけならtime()とtime()の値の差をとればよく、この時刻をまたいでも平気なはず。


コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« SW元ネタ スチャラカ編 | トップ | DLLの明示的リンクと序数 »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
time()の差をとる際の潜在バグ (ひしだま)
2006-08-25 03:47:50
time()とtime()の差をとる際、後の時刻が次のlongの限界を超えたらやっぱりダメだね。

つまり、最初のtime呼び出しが2038年より前で、次のtime呼び出しが4076年より後だったら、正しい時間が算出できない!

西暦4076年を過ぎるまで発覚しない、まさに潜在バグ(笑)



仕様に明記しておくべき事項!…かなぁ?(爆)

(初回を2038年までに呼び出し、その後4076年まで実行してないとこのバグは起きないんだから(笑))
返信する

コメントを投稿

PG(言語比較)」カテゴリの最新記事