リアルタイム システムで応答時間を測定および検証するには、次のマクロを使用します。

 

マクロ名説明
CppTest_Time CppTest_TimeInit(CPPTEST_INTEGER seconds, CPPTEST_INTEGER nanoseconds);指定の値を使って CppTest_Time 構造を初期化します。

nanoseconds は -999999999 と 999999999 の間でなければなりません。

CppTest_Time CppTest_TimeCurrent();

現在の時刻によって CppTest_Time 構造を初期化します。

時刻は、グリニッジ標準時の 1970 年 1 月 1 日 00:00:00 からの秒数 (およびナノ秒数) として格納されます。

正確さは、使用しているプラットフォームに依存します。

CppTest_Time CppTest_TimeDiff(CppTest_Time t1, CppTest_Time  t2); t1 t2 の差異を返します。
int CppTest_TimeCompare(CppTest_Time t1, CppTest_Time t2);

2 つの CppTest_Time 構造を比較します。

戻り値:

  • < 0: t1t2 よりも小さい/早い場合
  • == 0: t1 t2 が等しい場合
  • > 0: t1 t2 よりも大きい/遅い場合  

 

次のコードは、マクロを使って時刻を測定してレポートする方法の例です。

   ...
   /* Collect start time */
   CppTest_Time start = CppTest_TimeCurrent();
   /* Tested function call */
   int _return  = ::foo();
   /* Compute time diff */
   CppTest_Time stop = CppTest_TimeCurrent();
   CppTest_Time diff = CppTest_TimeDiff(stop, start);
   /* Report time diff (assuming positive values) */
   CPPTEST_MESSAGE(cpptestFormat("Call time for foo(): %d.%09d", diff.seconds, diff.nanoseconds));
   ...

次のコードは、時刻をチェックして比較する方法の例です。

   ...
   /* Verify execution time */
   CppTest_Time limit5ms = CppTest_TimeInit(0, 5000000);    
   CPPTEST_ASSERT(CppTest_TimeCompare(diff, limit5ms) < 0)    
   ... 

 

 

  • No labels