2015-11-23 5 views
-5
#ifdef WIN32 
#else 
#include <string.h> 
#include <time.h> 
#include <sys/types.h> 
#include <conio.h> 
#include <stdio.h> 
#include <sys/timeb.h> 
#include <time.h> 
#include <conio.h> 
#include <unistd.h> 
#endif 

int main() 
{ 
long time_ms; 
#ifdef WIN32 
struct _timeb timebuffer; 
_ftime(&timebuffer); 
time_ms = (long)timebuffer.time * 1000 + (long)timebuffer.millitm; 
printf("Windows timing %ld", time_ms); 

#else 
struct timeval t1; 
struct timezone tz; 
gettimeofday(&t1, &tz); 
time_ms = (t1.tv_sec) * 1000 + t1.tv_usec/1000; 
    printf("Other timing %ld", time_ms); 
#endif 
// return time_ms; 
}` 

Ошибка: enter image description hereхотите получать процессорное время, получил

это является частью полного кода, но когда я запускаю индивидуально получил ту же ошибку, не в состоянии найти решение. i прилагается ошибка экрана выстрел

+2

Удалите '#ifdef WIN32' и' # else' и '# endif'. –

+2

Вы не включаете файлы для компиляции Windows. Поэтому он не распознает структуры и функции. – Neijwiert

+0

На скриншоте показано, что вы используете Dev-C++. Не. Используйте CodeBlocks w/MinGW или версию Express/Community для Visual Studio (бесплатно). – szczurcio

ответ

0

gettimeofday не дает вам времени, затраченного на процесс, он дает вам реальное время в реальном мире. То, что вы хотите, это clock. Это сообщит вам количество времени обработки, которое программа использовала. Это стандартная функция ISO C и должна работать на любом компиляторе C.

Обратите внимание, что возвращаемое значение находится в тактовых импульсах. Чтобы получить секунды, вы должны разделить его на CLOCKS_PER_SEC.

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

int main(void) { 
    clock_t cpu_time; 

    for(int i = 1; i <= 10; i++) { 
     cpu_time = clock(); 

     printf("CPU time used since program start is: %d clocks or %f seconds\n", 
       (int)cpu_time, 
       (float)cpu_time/CLOCKS_PER_SEC 
     ); 
    } 
}