pagratios Δημοσ. 29 Μαρτίου 2011 Share Δημοσ. 29 Μαρτίου 2011 Πως μπορώ να πάρω χρόνο μέσα σε ένα πρόγραμμα C που το τρέχω στα windows. Σε linux χρησιμοποιώ τα εξής > #include <sys/time.h> main() { struct timeval start, end; gettimeofday(&start,NULL); ... gettimeofday(&end,NULL); printf("End of Serial at %lf sec\n\n",(double) (end).tv_sec + (double)(end).tv_usec / 1000000 - ((double) (start).tv_sec + (double)(start).tv_usec / 1000000)); } Το παραπάων είναι αρκετά ακριβές Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
pinball_elf Δημοσ. 30 Μαρτίου 2011 Share Δημοσ. 30 Μαρτίου 2011 Δεν είναι δικός μου ο κώδικας έτυχε να τον βρώ στο διαδίκτυο: > #include <time.h> #include <windows.h> #if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) #define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 #else #define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL #endif struct timezone { int tz_minuteswest; /* minutes W of Greenwich */ int tz_dsttime; /* type of dst correction */ }; /* Definition of a gettimeofday function */ int gettimeofday(struct timeval *tv, struct timezone *tz) { /* Define a structure to receive the current Windows filetime */ FILETIME ft; /* Initialize the present time to 0 and the timezone to UTC */ unsigned __int64 tmpres = 0; static int tzflag = 0; if (NULL != tv) { GetSystemTimeAsFileTime(&ft); /* The GetSystemTimeAsFileTime returns the number of 100 nanosecond intervals since Jan 1, 1601 in a structure. Copy the high bits to the 64 bit tmpres, shift it left by 32 then or in the low 32 bits. */ tmpres |= ft.dwHighDateTime; tmpres <<= 32; tmpres |= ft.dwLowDateTime; /* Convert to microseconds by dividing by 10 */ tmpres /= 10; /* The Unix epoch starts on Jan 1 1970. Need to subtract the difference in seconds from Jan 1 1601. */ tmpres -= DELTA_EPOCH_IN_MICROSECS; /* Finally change microseconds to seconds and place in the seconds value. the modulus picks up the microseconds. */ tv->tv_sec = (long)(tmpres / 1000000UL); tv->tv_usec = (long)(tmpres % 1000000UL); } if (NULL != tz) { if (!tzflag) { _tzset(); tzflag++; } /* Adjust for the timezone west of Greenwich */ tz->tz_minuteswest = _timezone / 60; tz->tz_dsttime = _daylight; } return 0; } Αν θέλεις να χρησιμοποιήσεις Windows API, η GetTickCount κάνει για αυτό που ζητάς. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
pagratios Δημοσ. 30 Μαρτίου 2011 Μέλος Share Δημοσ. 30 Μαρτίου 2011 Η συνάρτηση gettimeofday τυχαίνει να είναι η ίδια με αυτή στο linux αλλά μάλλον θέλει να την ορίσεις δεν είναι έτοιμη Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
pinball_elf Δημοσ. 30 Μαρτίου 2011 Share Δημοσ. 30 Μαρτίου 2011 Ναι δεν υπάρχει στο Windows API. Έίναι στην ουσία κάτι σαν "porting" της gettimeofday απο Linux σε Windows. Αν θέλεις μόνο Windows API τότε δες εδώ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
MitsakosGR Δημοσ. 30 Μαρτίου 2011 Share Δημοσ. 30 Μαρτίου 2011 Δες και αυτό το thread μήπως σε βοηθήσει. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.