Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で関数の実行時間を測定する方法

この記事では、C言語でプログラムや関数の処理にかかる時間を計測する方法について解説します。時間の測定には、time.hヘッダーファイルに定義されているclock()関数を使用します。

基本的な考え方

経過時間を求めるには、以下の手順に従います。

  1. 処理の開始直前にclock()を呼び出して開始時刻を取得する
  2. 処理の終了直後に再度clock()を呼び出して終了時刻を取得する
  3. 両者の差分を計算する
  4. 差分をCLOCKS_PER_SEC(1秒あたりのクロックティック数)で割ることで、実際に消費されたプロセッサ時間を秒単位で求める

clock()の戻り値はclock_t型であるため、秒単位に変換する際はdouble型へキャストすることを忘れないようにしましょう。

サンプルコード

#include <stdio.h>
#include <time.h>

void take_enter() {
    printf("Press enter to stop the counter \n");
    while(1) {
        if (getchar())
            break;
    }
}

int main() {
    // take_enter() の処理時間を計測する
    clock_t t;
    t = clock();
    printf("Timer starts\n");
    take_enter();
    printf("Timer ends \n");
    t = clock() - t;
    double time_taken = ((double)t) / CLOCKS_PER_SEC; // 経過時間を計算
    printf("The program took %f seconds to execute", time_taken);
    return 0;
}

実行結果

Timer starts
Press enter to stop the counter
Timer ends
The program took 5.218000 seconds to execute

注意点

  • clock()が返すのは「プロセッサ(CPU)時間」であり、スリープ中や入力待ちなどの待機時間は必ずしも含まれません。実際の壁時計時間(Wall-clock time)を測りたい場合は、POSIX環境ではclock_gettime()、WindowsではQueryPerformanceCounter()などの利用を検討してください。
  • 長時間動作するプログラムでは、clock_tの表現範囲を超える可能性があるため注意が必要です。
  1. Androidスマホを24時間表示に切り替える方法|設定手順をわかりやすく解説

    Androidの時計には、一般的な時計や腕時計では実現できない便利な機能やオプションが数多く用意されています。そのひとつが、標準の午前・午後(AM/PM)表示から24時間表示への切り替え機能です。この記事では、Androidで24時間表示に切り替える具体的な手順をご紹介します。 時刻表示形式を変更する手順 まず、Androidスマートフォンのホーム画面から「設定」アイコンを探してタップし、設定ページを開きます。 設定ページの項目一覧を下にスクロールし、「システム」というセクションまで進みます。ここには、言語の変更、ユーザー補助、バックアップなど、端末の全体的な動作に関わる設定がまとめられて

  2. Windows 10で時計の時刻がずれるときの直し方|原因と10の解決策を徹底解説

    Windows 10で時計の時刻が常にずれてしまう問題:日付は正しいのにタスクバーや設定画面に表示される時刻だけが間違っている——こんなトラブルに直面している方は、この記事の手順に従って解決してください。 この問題の厄介な点は、手動で時刻を合わせても一時的にしか反映されず、PCを再起動するとまた元に戻ってしまうことです。何度時刻を変更しても再起動のたびにリセットされるため、無限ループにはまってしまうこともあります。 PCの時計が誤った日付や時刻を表示している場合、その原因はさまざまです。この記事では、時計が正しく動作しない問題を解決するための複数の方法を詳しく紹介します。 Windows 1