ホームページ >バックエンド開発 >C++ >C でコードの実行時間を正確に測定するにはどうすればよいですか?

C でコードの実行時間を正確に測定するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-28 13:58:12934ブラウズ

How Can I Precisely Measure Code Execution Time in C  ?

C での正確な実行時間の測定

コードのパフォーマンスを最適化するには、正確な実行時間の測定が不可欠です。 C では、 Clock() 関数は経過時間を計算する方法を提供します。ただし、短いコード スニペットでは信頼性の低い結果が返される可能性があります。

クロック() の制限

小さな入力または単一行ステートメントの場合、クロック() は実行を報告することがよくあります。 「0秒」の倍。この不一致は、 Clock() 関数の粒度がシステムに応じてミリ秒またはナノ秒であるために発生します。この粒度より短い実行期間の場合、 Clock() はゼロに切り捨てられます。

解決策: GetTimeMs64() を使用する

この制限を克服するには、ユーティリティ関数の使用を検討してください。 GetTimeMs64()。この関数は、Unix エポックからの経過時間をミリ秒単位で正確に測定し、Windows と Linux の両方のプラットフォームで動作します。

GetTimeMs64() 関数は、GetSystemTimeAsFileTime() を使用して Windows のシステム クロックを利用します。 Linux では、gettimeofday() を使用して現在時刻を取得します。取得した値をミリ秒に変換し、Unix 時間標準に合わせて Unix エポックからオフセットを減算します。

実装

GetTimeMs64() を使用するには、単に次のように含めます。プログラム内の次のコード:

#include <Windows.h>
// or
#include <sys/time.h>
#include <ctime>

uint64 GetTimeMs64()
{
    // Code from provided solution goes here
}

実行時間を計算するにはコード スニペットの:

  1. コードを実行する前に GetTimeMs64() を呼び出します。
  2. コードを実行します。
  3. コードの実行後に GetTimeMs64() を再度呼び出します。
  4. 2 回目から 1 回目を減算して、経過時間を取得します。

使用例:

uint64 startTime = GetTimeMs64();
// Your code here
uint64 endTime = GetTimeMs64();
cout << "Execution time: " << (endTime - startTime) / 1000.0 << " seconds" << endl;

このメソッドは、小さなコード スニペットや短いステートメントでも正確な実行時間を測定します。これにより、開発者はコードを効果的に最適化し、パフォーマンスの向上を正確に評価できるようになります。

以上がC でコードの実行時間を正確に測定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。