この投稿では、WindowsおよびLinux環境でCプログラムの実行時間を見つける方法について説明します。

Cプログラムの実行時間を見つけるために一般的に使用される4つの方法があります。

1.使用する clock() 関数

使用できます clock() によって提供される機能 <time.h> Cアプリケーション内のタスクによって消費されるCPU時間を計算するためのヘッダーファイル。を返します clock_t タイプ。クロックティックの総数を格納します。

経過した合計秒数を計算するには、経過したクロックティックの合計数をで割る必要があります。 CLOCKS_PER_SEC マクロ( <time.h>)以下に示すように:

ダウンロード  コードを実行する

出力(異なる場合があります):

The elapsed time is 0.000014 seconds

 
注意してください clock() 関数は実際の経過時間を返しませんが、基盤となるオペレーティングシステムがプロセスを実行するのにかかった時間を返します。言い換えれば、実際の壁掛け時計の時間は実際にははるかに長い可能性があります。

2.使用する time() 関数

The <time.h> ヘッダーも提供します time() エポック(1970年1月1日00:00:00 UTC)から経過した合計秒数を返す関数。それはへのポインタを取ります time_t 引数として、通常は次のように渡されます NULL とを返します time_t タイプ。引数がそうでない場合 NULLの場合、戻り値も引数が指すメモリに格納されます。

その使用法はに似ています clock() 以下に示すように、関数:

ダウンロード  コードを実行する

出力:

The elapsed time is 3 seconds

3.使用する gettimeofday() 関数

The gettimeofday() 関数は、エポックから経過した壁掛け時計の時間を返し、それを timeval 構造。秒とマイクロ秒で表されます。

それはで定義されています <sys/time.h> ヘッダーファイルであり、2つの引数を取ります–最初の引数は timeval 構造体であり、2番目の引数はnullポインタです。 The timeval 構造は次のように宣言されます <time.h> ヘッダ:

struct timeval {
    long tv_sec;    /* seconds */
    long tv_usec;   /* microseconds */
};

 
次のコードは、その使用法を示しています。 gettimeofday() 壁掛け時計の時間を測定することによって:

ダウンロード  コードを実行する

出力(異なる場合があります):

The elapsed time is 5 seconds and 5000147 micros

 
この関数はGCCコンパイラでサポートされており、Windowsでは機能しない可能性があります。

4.使用する clock_gettime() 関数

使用することもできます clock_gettime() で定義された関数 <time.h> 最大ナノ秒の精度をサポートするヘッダーファイル。 2つの引数を取ります。最初の引数はクロックタイプで、2番目の引数は timespec 構造。 The timespec 構造はによって提供されます <time.h> ヘッダーであり、次のように宣言されます。

struct timespec {
    time_t tv_sec;   /* seconds */
    long tv_nsec;    /* nanoseconds */
};

 
次のコードは、システム全体のリアルタイムクロックを使用して経過時間を計算します。 CLOCK_REALTIME、その時間はエポックからの秒とナノ秒を表します。

コードをダウンロード

 
注意してください clock_gettime() 関数はごく少数のUNIXマシンでのみ機能します。

これで、Cプログラムの実行時間を見つけることができます。

 
関連記事:

Chronoライブラリを使用してC++プログラムの経過時間を測定する