2016-09-22 2 views
-1

私のCプログラム内の実際の、ユーザ、sys時間を得るための支援を探しています。たとえば、ファイルを読み込むのにどれくらいの時間がかかりましたか?私は#includeを見て、time()関数を-pフラグと一緒に使用していますが、私はこれを実行しています。私は私の質問は、私が持っていると思います:プログラム内の実際の、ユーザの、sysの時間を取得する

time_t total_time; 
time_t start, end; 

start = time(-p, &start); 

<some code> 

end = time(-p, &end); 

printf("real = %e, user = %S, sys = %S\n", ???????????); 

私は3回の違いを理解し、ちょうど結果を得る適切な実行を知らない。

+0

あなたの質問は[タグ:リアルタイム]とは関係ありません。無差別にタグを付けたり、標準的な用語を誤用したりしないでください。 – EJP

答えて

0

チェックtime()の戻り値:値は、一般に戻さ

は00:00からの秒数を表し、1970年1月1日UTC(すなわち、現在のUnixタイムスタンプ)。ポータブルプログラムは、この関数が直接返す値を使用するべきではありませんが、標準ライブラリの他の要素への呼び出しを使用して、移植可能な型(localtime、gmtime、difftimeなど)に変換します。 。

リアルタイムを表示するには、answerをお読みください。

ユーザとシステムの場合、読み取り:How to measure user/system cpu time for a piece of program?

+0

Iveは、これらの記事と、linuxのmanページを含めてもっとたくさんのものを読み込みました。私はそれが何をするのか、そしてそれぞれの価値が何を表すのかを理解していますIm実装に問題があります。私は本当に古いマシンでこのコードを実行しなければならないので、clock()を使用することはできません。clock()funcが嫌いです。大変ありがとうございますが、ありがとうございます。 – LD50

+0

あなたは歓迎です@ LD50、私はあなたの質問をupvoted、注目を得るために!別の回答が投稿されるのを待ってください。そうでない場合は、私の答えを受け入れることを検討してください。 – gsamaras

0

実経過時間が前後にtime()を呼び出し、その結果を減算することによって決定することができます。移植可能にする場合は、time()の戻り値が数値であることが保証されていないため、difftime関数を使用して減算を実行する必要があります。

ただし、POSIX準拠のシステムを使用している場合、戻り値はtime()からエポックからの秒数になります。したがって、それらを減算して経過秒数を得ることができます。

より高い解像度の結果を望む場合は、gettimeofday()を使用して、ミリ秒の分解時間を含むtimeval構造体を返すことができます。

&システム時間に最も携帯可能な方法は、clock() Cライブラリ関数を呼び出すことですが、あなたのコメントに@ gsamarasにあなたのシステムにはこの機能がないことが記載されています。

ご使用のシステムによっては、システム機能times()またはgetrusage()を呼び出すことができます。 という構造体の値が秒数とミリ秒単位で返されるため、getrusage()はより使いやすくなります。 times()は、実際の時間単位が必要な場合に変換する必要のあるクロックティックを返します。

プログラムがスレッド化されており、Linuxを使用している場合、getrusage()は、現在のスレッドのリソース消費量を得ることができます。

いずれの機能を選択しても、最初の読み取り値と最終読み取り値を取得し、2つの結果を差し引いて関数の時間を表示します。

関連する問題