A resposta à sua primeira pergunta é "Sim, o w32tm.exe (Tempo do Windows) é capaz de medir a variação de tempo de dois hosts de rede dentro de uma margem muito pequena de erro (termo relativo.)"
A resposta para a sua segunda pergunta é "Sim, existem maneiras melhores de medir a variação de tempo entre dois hosts. A Microsoft diz que está correto aqui Eles apontam para NIST , que lista um monte de outras partes software (e hardware) que provavelmente é melhor que o w32tm.exe. Tenho certeza de que muitos deles são, já que a Microsoft claramente não suporta o w32tm.exe como uma ferramenta de altíssima precisão. "
O Horário do Windows (e o w32tm.exe) são compatíveis com o RFC 1305 (NTPv3), que inclui a compensação da latência da rede. Fonte e Fonte . Compensar a latência da rede é um dos recursos básicos do protocolo de horário da rede. (Veja o algoritmo de Marzullo, que é o que o NTPv3 usa.)
O que me frustra a sua pergunta é que a alta precisão é tão importante para você, mas você não dá nenhuma pista sobre a precisão exata que precisa. 1 segundo? 1 milissegundo? 1 nanossegundo? Computadores de uso geral têm uma resolução de clock que está ligada à freqüência de interrupções de clock recebidas pelo processador, que geralmente é controlada por um oscilador de cristal que funciona a 32.768 KHz (uma potência de dois), mas sensível à temperatura, voltagem, etc. O HAL em uma máquina típica do Windows usa como padrão a configuração do relógio em tempo real para disparar a cada 15,6 milissegundos, ou cerca de 64 vezes por segundo. No entanto, você ainda pode girar o RTC para 1 ms e também pode subdividir essa fatia de tempo de 15,6 milissegundos via software em fatias ainda menores para aplicativos de alto desempenho. Independentemente disso, o timestamp NTP em si é um número de ponto fixo sem sinal de 64 bits e, portanto, tem um limite teórico de cerca de 232 picossegundos de precisão, mas a implementação do Windows Time nem se aproxima disso. O Windows Time exibe uma precisão NTP de -6 e não suporta alguns dos melhores e mais recentes algoritmos NTP; portanto, na realidade, provavelmente nunca poderia produzir uma precisão mais precisa do que um clock de hardware ou mais ou menos 16 milissegundos.
Os sistemas operacionais de propósito geral não são extraordinariamente ótimos, especialmente se os algoritmos de manutenção de tempo forem implementados no modo de usuário, onde os encadeamentos de execução são preempiados constantemente. Relógios de alta precisão são caros.
Aimagemacimaéafreqüênciadeinterrupçõesdeclocknosistema.Observequeatémesmoasinterrupçõesderelógio(IRQL28noWindowsde32bitseIRQL13noWindowsde64bits)podemserprejudicadasporinterrupçõesmaisaltas,comointerrupçõesentreprocessadores,epodemcausaratrasonacontabilizaçãodotempoexato,mesmoquenanossegundo.
Então,devoltaaoNTP.
w32tm/stripchart/computer:10.0.1.8
éumamaneiraperfeitamenteválidadetestarotempodeltaentreumamáquinaWindowseoutra.Elelevaemcontaalatênciaderede,queéimplícitaporsercompatívelcomNTPv3,comodiscutimosacima.Masnãoacreditenaminhapalavra.VocêpodeveratransaçãoporsimesmoemumrastreamentodoWireshark(pacotedoclienteenviadopelow32tm.exeparaumservidorNTPdoWindows):
A Microsoft não garante precisões sub-segundo usando o Windows Time, porque elas não precisam suportar isso para que qualquer um de seus produtos funcione. No entanto, isso não significa que o w32tm.exe ainda não seja capaz de precisão abaixo de segundos.
Se você realmente precisa de um tempo mais preciso do que isso, você pode extrair um milissegundo extra ou 10 de precisão com outra implementação do NTP que usa algoritmos ligeiramente diferentes. Mas se você realmente precisa de um tempo mais preciso, eu pessoalmente não sugeriria NTP. Eu usaria um relógio de césio direto na sua máquina e não usaria um sistema operacional preventivo.
Editar 5/2/2017 : As informações acima estão desatualizadas e não se aplicam necessariamente ao Windows Server 2016 e posteriores. A Microsoft fez algumas melhorias sérias na precisão do Windows Time em sistemas operacionais posteriores.