Equivalente de gettimeday () para Windows

Alguém sabe uma função equivalente da função gettimeofday () no ambiente Windows? Estou comparando um tempo de execução de código no Linux vs Windows. Eu estou usando o MS Visual Studio 2010 e ele continua dizendo, identificador "gettimeofday" é indefinido.

Grato por qualquer ponteiros.

questionAnswers(3)

GetLocalTime() pelo tempo no fuso horário do sistema,GetSystemTime() para UTC. Se você quiser um tempo de segundos desde a época, useSystemTimeToFileTime() ouGetSystemTimeAsFileTime().

Para intervalos, useGetTickCount(). Ele retorna milissegundos desde a inicialização.

Para obter intervalos com a melhor resolução possível (limitada apenas por hardware), useQueryPerformanceCounter().

Aqui está uma implementação gratuita:

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <stdint.h> // portable: uint64_t   MSVC: __int64 

// MSVC defines this in winsock2.h!?
typedef struct timeval {
    long tv_sec;
    long tv_usec;
} timeval;

int gettimeofday(struct timeval * tp, struct timezone * tzp)
{
    // Note: some broken versions only have 8 trailing zero's, the correct epoch has 9 trailing zero's
    // This magic number is the number of 100 nanosecond intervals since January 1, 1601 (UTC)
    // until 00:00:00 January 1, 1970 
    static const uint64_t EPOCH = ((uint64_t) 116444736000000000ULL);

    SYSTEMTIME  system_time;
    FILETIME    file_time;
    uint64_t    time;

    GetSystemTime( &system_time );
    SystemTimeToFileTime( &system_time, &file_time );
    time =  ((uint64_t)file_time.dwLowDateTime )      ;
    time += ((uint64_t)file_time.dwHighDateTime) << 32;

    tp->tv_sec  = (long) ((time - EPOCH) / 10000000L);
    tp->tv_usec = (long) (system_time.wMilliseconds * 1000);
    return 0;
}

aqui é um do PostgreSQL que usa APIs do Windows e as conversões adequadas.

No entanto, se você quiser código de tempo, sugiro que você olheQueryPerformanceCounter () ou porinvocando diretamente o TSC se você só vai rodar em x86 por exemplo.

yourAnswerToTheQuestion