Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Linuxでのnsレベルの時間を取得するための関数の使い方

Linuxでのnsレベルの時間を取得するための関数の使い方

  

Linuxのシステム運用をするとき、テストプログラムの性能が必要なので、時間はnsレベルに正確でなければなりません。次の小シリーズでは、Linuxユーザー空間のnsレベルの時間取得を実現するための関数の使い方を説明します。一緒に学びましょう。

I.はじめ

私たちはしばしば、Linuxのユーザ空間の下に以下に説明するプログラムは、NSを取得する際のパフォーマンスを測定するために、性能試験手順の正確な時間nsのレベルを取得する必要がありますレベルタイムメソッド

2番目に、nsレベルタイムを取得するためのユーザー空間

clock_gettime関数を使用すると、関数のプロトタイプは次のようになります。

long sys_clock_gettime(clockid_t which_clock、struct timespec * tp);

1.which_clockパラメータの説明

CLOCK_REALTIME:システムのリアルタイム時間は、システムのリアルタイム時間、つまりUTC1970-1-1から開始します。システムが真ん中にある場合は、0:0:0です。時間はユーザーによって変更され、対応する時間はそれに応じて変更されます。

CLOCK_MONOTONIC:システムが開始された瞬間から開始し、ユーザーによって変更されたシステム時間の影響を受けません。

CLOCK_PROCESS_CPUTIME_ID:このプロセスは現在のコードシステムCPUに費やされた時間

CLOCK_THREAD_CPUTIME_ID:現在コードシステムCPUに通されたスレッドによって費やされた時間

2.struct timespec構造体

コードは次のとおりです。

struct timespec

{

time_t tv_sec;

long int tv_nsec;

};

サンプルコードは次のとおりです。

コードは次のとおりです。

#include "stdio.h"

#include "stdlib.h"

#include《 time.h》

int main(void)

{

struct timespec time_start = {0、0}、time_end = {0、0}

clock_gettime(CLOCK_REALTIME、& time_start);

printf('開始時間%ll、%llu \\ n'、time_start.tv_sec、time_start.tv_nsec);

clock_gettime(CLOCK_REALTIME、& time_end);

printf(' endtime%llus、%llu ns \\ n'、time_end.tv_sec、time_end.tv_nsec);

printf (期間:%llus、%lluns \\ n、time_end.tv_sec-time_start.tv_sec、time_end.tv_nsec-time_start.tv_nsec);

return 0;

}

コンパイルコマンド:

コードは次のとおりです。

gcc test.c -o test -lrt

実行結果:

コードは次のとおりです。

。 /test

開始時刻1397395863s、973618673 ns

終了時刻1397395863s、973633297 ns

duration:0s 14624ns

実行結果から、printfが呼び出されることがわかります(関数は一度に約15usを必要とします。

上記はLinuxで関数を使ってnsレベルの時間を取得する方法ですが、プログラムのパフォーマンスをnsレベルの時間までテストする必要がある場合はこの記事で説明する方法を試してください。それほど単純ではありませんか。

Copyright © Windowsの知識 All Rights Reserved