2016-03-18 11 views
-1

Мой код выглядит следующим образом:часов() не работает правильно

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

int main(void) { 
    time_t loop_begin, loop_end, scanf_begin, scanf_end; 
    double loop_time, scanf_time; 
    int q; 


    loop_begin = clock(); 
    //some big loop 
    loop_end = clock(); 

    loop_time = (double)(loop_end - loop_begin)/CLOCKS_PER_SEC; 
    printf("%.6f\n", loop_time); 


    scanf_begin = clock(); 
    printf("qwe> ");scanf("%d", &q); 
    scanf_end = clock(); 

    scanf_time = (double)(scanf_end - scanf_begin)/CLOCKS_PER_SEC; 
    printf("%.6f\n", scanf_time); 

    return 0; 
} 

Но выход, как это:

20.087593 
qwe> 543  
0.000073 

ли я что-то отсутствует, или это нормально? Если это нормально, что бы вы предложили?

+1

Что вы ожидаете от других? – Blindy

+0

@ Блинди, второй раз, чтобы быть чем-то вроде 5. – betseg

+0

Вы спрашиваете, нормально ли для вашей «некоторой большой петли» заняться больше времени, чем для пользователя, чтобы написать «543»?!? – dovetalk

ответ

2

clock измеряет время процессора. Когда ваша программа ждет ваших нажатий, она блокируется в системном вызове и не использует процессорное время.

Из Руководства программиста Linux:

ИМЯ

clock - определить время процессора

СИНТАКСИС

#include <time.h> 
clock_t clock(void); 

ОПИСАНИЕ

Функция clock() возвращает приблизительно процессорное время, используемое программой.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Возвращаемое значение времени процессора используется до сих пор в качестве clock_t; для получения номера секунд , разделите на CLOCKS_PER_SEC. Если используемое время процессора не является или его значение не может быть представлено, функция возвращает значение (clock_t) -1.

 Смежные вопросы

  • Нет связанных вопросов^_^