повысить производительность Asio - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь измерить задержку, используя 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 Память

...