Estou tentando medir a latência do envio de um pacote. Eu faço isso da seguinte maneira. O cliente envia tempo registrado. O servidor recebe o pacote e fornece a diferença entre a hora atual e a hora registrada no pacote. No pseudocódigo, isso é
Cliente
while(true)
// sleep(1)
packet.data = get_current_time()
send_packet(packet)
Servidor
packet = receive_packet()
get_current_time() - packet.data
Se eu introduzir um sono no cliente antes de gravar o horário e enviá-lo, obtenho uma latência de cerca de 80 microssegundos para que um pacote seja enviado e recebido. No entanto, se eu remover esse sono para que o loop esteja constantemente enviando pacotes, recebo uma latência de cerca de 4 microssegundos. Por que uma diferença tão dramática no desempenho? Cache? Execução especulativa? O que está acontecendo aqui? Obrigado por ajudar!