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

C言語のdifftime()ライブラリ関数の使い方を解説

この記事では、C言語標準ライブラリに含まれる difftime() 関数について解説します。difftime() は、2つの時刻値の差(経過秒数)を求めるために使用される関数です。

difftime() は2つの time_t 型の時刻引数を受け取ります。第1引数には「終了時刻」、第2引数には「開始時刻」を指定し、戻り値として両者の差が double 型(秒単位)で返されます。なお、time1 が time2 より後の場合、結果は負の値になる点に注意してください。

プロトタイプ

double difftime(time_t time1, time_t time2);

サンプルコード

以下は、処理開始時刻と終了時刻を取得し、その差を difftime() で計算する簡単なプログラムです。sleep() を使って5秒間待機した後、実際の経過時間を表示します。

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

main() {
    int sec;
    time_t time1, time2;

    /* 処理開始時刻を取得 */
    time(&time1);
    printf("Current Time: %ld\n", time1);

    for (sec = 1; sec <= 5; sec++) {
        sleep(1);  /* 1秒待機 */
        printf("Count: %d\n", sec);
    }

    /* 処理終了時刻を取得 */
    time(&time2);
    printf("Ending Time: %ld\n", time2);

    /* 時刻の差を表示 */
    printf("Difference is %.2f seconds", difftime(time2, time1));
}

実行結果

Current Time: 1554918635
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Ending Time: 1554918640
Difference is 5.00 seconds

解説

このプログラムでは、まず time(&time1) によって現在の時刻(エポックからの経過秒数)を取得しています。その後、for ループ内で sleep(1) を呼び出すことで、合計5秒間待機します。ループ終了後に再び time(&time2) で時刻を取得し、difftime(time2, time1) を呼び出すことで、開始から終了までの経過時間である「5.00秒」が正確に出力されます。

difftime() は、パフォーマンス測定やタイマー処理など、プログラム内で経過時間を計算したい場面で広く活用できる便利な関数です。

  1. Pythonのtime.perf_counter()関数とは?使い方と実行時間の計測方法を徹底解説

    このチュートリアルでは、Pythonの time.perf_counter() メソッドについて詳しく解説します。 time.perf_counter() とは time.perf_counter() は、高解像度(高精度)なパフォーマンスカウンターの現在値を、秒単位の浮動小数点数(float)で返す関数です。主にプログラムの実行時間を正確に計測するために使用されます。 この関数には、以下のような特徴があります。 利用できる中で最も精度の高いクロックを使用する 単調に増加し続けるため、システム時刻の変更の影響を受けない sleep() 中の待機時間も計測対象に含まれる 戻り値の基準点は未定

  2. SQL ServerのCOUNT関数とは?基本構文からDISTINCT・GROUP BYの活用まで徹底解説

    この記事では、SQL ServerのCOUNT関数の使い方について、具体的な構文と実行例を挙げながら詳しく解説します。COUNT関数はデータベース操作で最も頻繁に使われる集計関数の一つです。基本をしっかり押さえておくことで、日々のデータ分析やシステム開発に大きく役立ちます。 COUNT関数とは COUNT関数は、SQL Serverにおいてテーブル内のレコード(行)の件数を数えるために使用される集計関数です。重要なポイントとして、NULLが含まれる値はカウントの対象から除外されるという特性があります。 基本構文 SQL ServerでCOUNT関数を使用する際は、以下の構文を使用します。