프로그램이 시작되고 끝날때까지의 시간을 구하는 함수? 혹은...

익명 사용자의 이미지

제목 그대로 사용자가 어떤 프로그램을 실행시킨후에 종료 시킬때까지의
시간을 구하는 함수(C library)가 있나요?

예를 들어서 채팅프로그램을 종료 하면 사용자가 사용한 시간이 터미널에
출력되는.....

답변 주시면 감사드리겠습니다.

익명 사용자의 이미지

명령어 쉘에서 time을 쓰면 됩니다.
예를 들어 >time a.out 을 하면 됩니다.

real 0m0.010s
user 0m0.010s
sys 0m0.000s

이런 식으로 결과가 나옵니다. context switching을 통해 다른 프로세스
도 함께 돌리니까 실제 이 프로세스에서 걸린 시간도 알 수 있겠죠.

그런데 프로그램 내에서 계산하는 것은 모르겠네요. 그 프로세스 혼자 돈
다면 그냥 시간을 구해서 빼면 되겠는데 실제로 여러 프로세스가 도는 경
우에 그 프로세스가 소요하는 시간에 대해서 검사하는 것은 그냥 카운트
를 해서 하든지 밖에 생각이 안 나네요. 쩝..

일단 위의 방법을 사용해 보세요.

익명 사용자의 이미지

시간관련 라이브러리를 참조하신다면, 방법이야 여러가지 있을 수 있겠
죠. 물론, 어느 시점을 시작으로 치고, 어느 시점을 끝으로 치느냐가 문제
가 되겠지만요.
그냥 초단위까지의 시간을 재고 싶으시다면 time, localtime등의 함수를
쓸 수도 있겠구 (time_t 형 변수와 tm구조체가 필요하겠죠) gettimeofday
를 이용해서 micro-second 단위까지 측정할 수도 있습니다. (timeval 구조
체를 이용해야죠). timespec구조체를 이용하면 nano-second까지 측정되는
걸루 압니다. 이용할 수 있는 함수는 뭐가 있는지 잘은 모릅니다^_^a;;

간단한 예제를...

#include
#include

int main()
{
struct timeval t1, t2;
long interval;

gettimeofday(&t1, 0); // 여기서 작업수행 시작시간 측정
/*
* 수행할 작업들^_^a;;;
*/
gettimeofday(&t2, 0); // 여기서 작업수행 종료시간 측정
interval = gettime_proc(&t1, &t2);

return 0;
}

long gettime_proc(const struct timeval *tv1, const struct timeval
*tv2)
{
long dif_sec;
long dif_usec;

if( tv1->tv_sec >= tv2->tv_sec )
dif_sec = tv1->tv_sec - tv2->tv_sec;
else
dif_sec = tv2->tv_sec - tv1->tv_sec;

if( tv1->tv_usec > tv2->tv_usec )
{
dif_usec = tv1->tv_usec - tv2->tv_usec;
}
else
dif_usec = tv2->tv_usec - tv1->tv_usec;

return (dif_sec*1000000 + dif_usec);
}

이렇게하면...되지 않을까요 ^_^a;;;
물론, 마이크로초 단위로 측정하기땜에 gettimeofday호출 위치에 따라
시간차가 많이 나긴 합니다. 아주 정확하게 측정하기엔 무리가 있져.
메인 함수 호출할때, 글구 gettimeofday함수 호출 및 수행에도 시간이 걸
리니까요.

혹시, 제 코드에 문제가 있다면 지적을 해주십쇼=_=;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.