質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3378閲覧

[vc++]ミリ秒単位の時刻計算

peachkun

総合スコア20

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/08/08 03:44

MFCを使ってミリ秒単位の時刻計算がしたいです。

ある処理の開始からある処理の終了までの経過時間をミリ秒単位で記録していきたいと考えてます。
ミリ秒単位の取得のためには、GetLocalTime関数でSYSTEMTIME構造体にいれて取得できるかなと考えているのですが?
各単位ごとに分けて値を持っているため、年や月がまたがった時の差分の計算がややこしいです。

ここの計算式について良いものがあれば教えてください。
またSYSTEMTIMEより使いやすい時刻関連の仕組みがあったら教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

MFCに限りませんが、ミリ秒単位で手軽に扱いたいのであればGetTickCounttimeGetTimeが使えます。

GetTickCount - Microsoft Docs
timeGetTime - 同上

GetTickCountに関しては、APIの説明にあるようにWindows起動時に0から始まり、49.7日ででんぐり返る(また0から始まる)ので注意してください。

投稿2020/08/08 03:52

編集2020/08/08 03:54
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peachkun

2020/08/08 04:04

回答ありがとうございます。 調べてみます!
SHOMI

2020/08/08 05:29 編集

Vista以降ならもっと周期の長いGetTickCount64が使用できます https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount64 それと、GetTickCountは精度が悪いです(15ms程度)。timeBeginPeriodで1msまでは上げられますがOSのスケジューリングに影響します。(XPの頃の知識なので最新のOSでも影響するかは知りません。また本来はtimeGetTime用であり、いまのWindowsでもGetTickCountの精度が上がるかは試していません。) 処理時間の短いものを計測すると0or15msとなったりします…
dodox86

2020/08/08 04:33

SHOMIさん、フォローの情報、どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問