Задержка обмена сообщениями в Java (с Zeromq) - PullRequest
1 голос
/ 16 октября 2011

Я просто запустил пример приветствия zeroMQ world и рассчитал время ожидания запроса-ответа.В среднем он работал около 0,1 мс, используя протокол IPC.Это звучит довольно медленно для меня .... Это звучит примерно так?

        long start=System.nanoTime();
        socket.send(request, 0);
        //  Get the reply.
        byte[] reply = socket.recv(0);
        System.out.println((System.nanoTime()-start)/1000000.0);

1 Ответ

3 голосов
/ 16 октября 2011

Полагаю, у вашего среднего образца было больше одного?Я бы провел тест по крайней мере 2-10 секунд, прежде чем брать среднее значение.Средняя задержка в одном и том же процессе / потоке может вводить в заблуждение.

Я бы создал второй процесс, который отображал бы все, что он получает, если вы еще этого не делаете.(И делите задержку на две, если вы не хотите задержку RTT)

Обычные сокеты могут получить задержку RTT 20 микросекунд на типовой многоядерной коробке, и я ожидаю, что IPC будет быстрее.На быстром ПК вы можете получить типичную задержку RTT, равную 9 микросекундам, используя сокеты.

Если вы хотите, чтобы задержка была намного ниже, я бы рассмотрел все в одном процессе или в одном потоке, если вы можете, вв этом случае стоимость вызова метода составляет около 10 нс (если он не встроен;)

...