Я пытаюсь измерить задержку отправки пакета. Я делаю это следующим образом. Клиент отправляет записанное время. Сервер принимает пакет и выдает разницу между текущим временем и записанным временем в пакете. В псевдокоде это

клиент

while(true)
  // sleep(1)
  packet.data = get_current_time()
  send_packet(packet)

сервер

packet = receive_packet()
get_current_time() - packet.data

Если я ввожу спящий режим в клиент перед тем, как записать время и отправить его, я получу задержку около 80 микросекунд для пакета, который будет отправлен и получен. Однако, если я удаляю этот спящий режим так, чтобы цикл постоянно отправлял пакеты, я получаю задержку около 4 микросекунд. Почему такая резкая разница в производительности? Кэширование? Спекулятивное исполнение? Что здесь происходит? Спасибо за помощь!

0