Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
QueryPerformanceTest.cpp
[詳解]
1
5
6#include "pch.h"
7#include "QueryPerformance.h"
8
9using namespace Microsoft::VisualStudio::CppUnitTestFramework;
10
11namespace WindowsLibraryTest
12{
13 TEST_CLASS (QueryPerformanceTest)
14 {
15 public:
16 TEST_CLASS_INITIALIZE (ClassInitialize)
17 {
18 Logger::WriteMessage ("QueryPerformanceTest class initialize.\n");
19 }
20
21 TEST_CLASS_CLEANUP (ClassCleanup)
22 {
23 Logger::WriteMessage ("QueryPerformanceTest class cleanup.\n");
24 }
25
26 TEST_METHOD_INITIALIZE (MethodInitialize)
27 {
28 Logger::WriteMessage ("QueryPerformanceTest method initialize.\n");
29 }
30
31 TEST_METHOD_CLEANUP (MethodCleanup)
32 {
33 Logger::WriteMessage ("QueryPerformanceTest method cleanup.\n");
34 }
35
36 TEST_METHOD (QueryPerformance1)
37 {
38 const int count = 30;
39 const DWORD cdwTime = 20;
41 TCHAR tszMsg[80];
42 double dArray[count];
43
44 for (int i = 0; i < count; i++)
45 {
46 Q.Start ();
47 Sleep (cdwTime);
48 Q.Stop ();
49 dArray[i] = Q.PastTime ();
50 }
51
52 double sum = 0;
53 double average = 0;
54 double minValue = cdwTime;
55 double maxValue = cdwTime;
56 double sd = 0;
57
58 for (int i = 0; i < count; i++)
59 {
60 sum += dArray[i];
61 if (minValue > dArray[i]) minValue = dArray[i];
62 if (maxValue < dArray[i]) maxValue = dArray[i];
63 }
64 average = sum / count;
65
66 for (int i = 0; i < count; i++)
67 {
68 sd += pow (average - dArray[i], 2);
69 }
70 sd = pow (sd / count, 0.5);
71
72 _stprintf_s (tszMsg, _T ("interval=%d minValue=%.4f maxValue=%.4f average=%.4f sd=%.4f\n"), cdwTime, minValue, maxValue, average, sd);
73 Logger::WriteMessage (tszMsg);
74
75 int outbound = 0;
76 for (int i = 0; i < count; i++)
77 {
78 double diff = dArray[i] - cdwTime;
79 if (-0.9 > diff || 0.9 < diff)
80 {
81 outbound++;
82 _stprintf_s (tszMsg, _T ("i=%3d outbound=%3d diff=%.4f\n"), i, outbound, diff);
83 Logger::WriteMessage (tszMsg);
84 }
85 }
86 }
87 };
88}
高分解能時間計測に関するWindowsAPIを集約したクラス
プリコンパイル済みヘッダー ファイルです。
高分解能時間計測クラス
VOID APIENTRY Start()
計測を開始します。
double APIENTRY PastTime() const
計測開始〜計測終了までの時間を出力します。
VOID APIENTRY Stop()
計測を終了します。
TEST_CLASS(ArrayTest)
Definition: ArrayTest.cpp:19