トップページ > プログラム > 2015年02月03日 > cHPe/D1w

書き込み順位&時間帯一覧

10 位/177 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000100100011000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
838 :デフォルトの名無しさん[sage]:2015/02/03(火) 10:23:01.06 ID:cHPe/D1w
VS2013で
for (int i = 0; i<1000; i++)
{
  auto nowS = std::chrono::system_clock::now();
  // 10秒前後掛かる重い処理 
  auto nowE = std::chrono::system_clock::now();
  auto millisec = duration_cast_milliseconds(nowE - nowS).count();
}
みたいな感じで
重い処理に掛かる時間を計測しているのですが、1000回繰り返して正常に終わる場合もあれば、
1000回繰り返すと、時々1,2回くらい計測時間がマイナスになるんですが、そんなこと有りますか?
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
840 :デフォルトの名無しさん[sage]:2015/02/03(火) 13:24:52.25 ID:cHPe/D1w
>>839
ありがとうございました。steady_clockを試してみます。
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
841 :デフォルトの名無しさん[sage]:2015/02/03(火) 17:32:32.52 ID:cHPe/D1w
その後、steady_clockを使って試したのですが、以下のコードをWin7-64のVS2013でWinXP向けにビルドして
WinXP32SP3のマシンで実行するとやはり、マイナスの値が計測されました。このコードで何かおかしな部分ありますか?
だいたいいつもi=2000前後で発生します。でも、その後は、また正常に計測されます。再現実験に2,3時間かかるので
困っています。
#include <Windows.h>
#include <string>
#include <chrono>
#include <iostream>
using namespace std;
void main(){
for (int i = 0; i < 1000000; i++){
auto nowS = std::chrono::steady_clock::now();
Sleep(5 * 1000); // 5 sec
auto nowE = std::chrono::steady_clock::now();
auto millisec = std::chrono::duration_cast<std::chrono::milliseconds>(nowE - nowS).count();
cout << "i=" << i << endl;
cout << millisec << endl;
if (millisec < 0){
wstring msg = L"millisec=" + to_wstring(millisec);
MessageBox(NULL, msg.c_str(), L"マイナス", MB_OK);
}
}
}
【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]©2ch.net
843 :デフォルトの名無しさん[sage]:2015/02/03(火) 18:20:52.61 ID:cHPe/D1w
>>842
レスありがとうございました。
WinAPIで確実なのはGetLocalTime()でしょうかね?
なお841をXP向けにReleaseビルドしたときはランタイムライブラリはマルチスレッド(/MT)
です。それ以外の設定はデフォルトだと思います。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。