clock/sec 를 세려고 하는데 이 방법이 맞나요??

tyolee83의 이미지

     #include <time.h>
 
     clock_t start, end;
     double cpu_time_used;
 
     start = clock();
     ... /* Do the work. */
     end = clock();
     cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

이것이 구글링한 코드이자 제가 생각한 초당 클럭수 세는 방법인데요

(출처 : http://www.gnu.org/software/libc/manual/html_node/CPU-Time.html)

double형이므로 printf에서 %lf로 찍어보면

1.5 0.8 이런 식의 숫자로 찍히게 됩니다.

그렇다면 이게 초당 클럭이 1.5회 뛰었다는 얘기인가요? 그건 아닐거 같아서요...

프로그램의 성능을 수행시간(몇초 걸렸나)으로 재는 것은 스케쥴링 등의 영향이 있어서

cpu clock time으로 성능비교를 하려고 하는데

숫자가 이런식으로 나오는게 좀 이상하네요...

적절한 답변좀 부탁드립니다.

감사합니다.

yeilho의 이미지


올리신 웹문서를 보면 해당 코드는 어떤 작업에 대한 프로세스 타임을 구하는 예제입니다.

you call the clock function at the beginning and end of the interval you want to time, subtract the values, and then divide by CLOCKS_PER_SEC (the number of clock ticks per second) to get processor time, like this:

만약 단순히 클럭수만 보시려면, CLOCKS_PER_SEC 로 나눌 필요가 없습니다.

그런데 이 clock_t 하고 CLOCKS_PER_SEC 이 Implementation dependent 하기 때문에 사용하실때 주의가 필요합니다.
자세한 내용은 아래 사이트를 참고하세요.

http://www.thescripts.com/forum/thread214814.html

마지막으로 성능비교는 걸린 시간으로 하기도 합니다.
따라서 리눅스에서는 time이라는 명령어를 사용하셔도 되고, 프로그램에서는 gettimeofday()사용하신후, 적당히 계산하심 될겁니다. ;-)

Linux rules!!!

Linux rules!!!

tyolee83의 이미지

제가 원한 것은 "초당 클럭수" 입니다. 그러니까 CLOCKS_PER_SEC으로 나누는게 맞는거 같은데

이게 processor time을 말하는 것인가요??

위에 알려주신 문서를 읽어보긴 했는데, 아직도 의미가 와닿지 않는군요 ㅠ
==========================
Toward Fully Understanding

//TODO

익명 사용자의 이미지

초당 클럭수가 바로 CLOCKS_PER_SEC이라니까요.
클럭수를 CLOCKS_PER_SEC으로 나누면 시간(초단위)이 되는 거고.

그리고 printf에서 double을 출력하려면 %f를 써야 합니다.
%lf는 long double에 쓰는 거예요.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.