Я пытаюсь измерить задержку, используя asio async_send
для сокета TCP.
void COHTCPPort::send(const uint8_t* puBuf, size_t iLen)
{
size_t iNewLen = iLen;
timespec oPortTime;
clock_gettime(CLOCK_REALTIME, &oPortTime);
printf("d1 %ld\n", oPortTime.tv_nsec);
if (m_iSendBufferSize < iLen)
{
//resize buffer
delete[] m_puSendBuffer;
m_puSendBuffer = new uint8_t[iLen];
m_iSendBufferSize = iLen;
}
memcpy(m_puSendBuffer, puBuf, iNewLen);
clock_gettime(CLOCK_REALTIME, &oPortTime);
printf("d2 %ld\n", oPortTime.tv_nsec);
// TODO: need to cater larger memory
boost::asio::async_write(
*m_poSocket,
boost::asio::buffer(m_puSendBuffer, iNewLen),
boost::asio::transfer_all(),
boost::bind(
&COHTCPPort::onSendComplete,
this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred
)
);
clock_gettime(CLOCK_REALTIME, &oPortTime);
printf("d3 %ld\n", oPortTime.tv_nsec);}
}
TCP без задержки установлено значение true.задержка составляет около 10 микросекунд.Я не знаю, ожидается ли это, или кто-то уже проводил подобное испытание раньше.
Аппаратное обеспечение: Intel (R) Xeon (R) CPU X5690 @ 3,47 ГГц X 12 64G Память