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

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

Patricia Arquette
リリース: 2024-12-20 12:25:10
オリジナル
247 人が閲覧しました

How Can I Accurately Measure Function Execution Time in C  ?

C で関数の実行時間を正確に測定する

背景

C で特定の関数の実行時間を決定するには、パフォーマンスの分析と最適化に不可欠です。ネイティブ Linux では、時間を正確に測定するための限られたオプションが提供されており、Boost.Chrono の process_user_cpu_ Clock 関数は、関数の実行時間全体を対象とするのではなく、ユーザーの CPU 時間のみを対象としています。

より正確なソリューション

幸いなことに、C 11 には、 からの std::chrono::high_resolution_ Clockヘッダ。この高解像度クロックは、関数の実行時間を正確かつ包括的に測定します。

コード例

#include <chrono>

/* Only for this example. */
#include <iostream>
#include <thread>

void long_operation() {
    /* Simulating a long, intensive operation. */
    using namespace std::chrono_literals;
    std::this_thread::sleep_for(150ms);
}

int main() {
    using std::chrono::high_resolution_clock;
    using std::chrono::duration_cast;
    using std::chrono::duration;
    using std::chrono::milliseconds;

    auto t1 = high_resolution_clock::now();
    long_operation();
    auto t2 = high_resolution_clock::now();

    /* Milliseconds as an integer. */
    auto ms_int = duration_cast<milliseconds>(t2 - t1);

    /* Milliseconds as a double. */
    duration<double, std::milli> ms_double = t2 - t1;

    std::cout << ms_int.count() << "ms\n";
    std::cout << ms_double.count() << "ms\n";
    return 0;
}
ログイン後にコピー

このコード スニペットは、high_resolution_ Clock を使用して関数の実行時間を測定する方法を示しています。 long_operation 関数の継続時間。 t1 変数と t2 変数は関数の実行前後のタイムスタンプを記録し、その差はミリ秒に変換されて表示されます。

この手法を採用することで、時間に関係なく、関数の実行時間の正確で一貫した測定値を取得できます。 CPU 負荷の変動により、信頼性の高いパフォーマンス評価を保証します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート