Chciałbym użyć tej biblioteki, którą znalazłem, jest to czysty port java (nie opakowanie) zeromq. Próbuję go przetestować, a podczas gdy claims niektórych dobrych liczb, test, który wykonuję daje raczej słabe wyniki, a nawet jest wykonywany lokalnie (klient i służyć na tej samej maszynie). Jestem pewien, że to coś, co robię źle. Zajmuje około 5 sekund, aby wykonać tę 10.000 pętli wiadomości.Dlaczego ten benchmark JeroMQ (port ZeroMQ) jest tak wolny?
Wszystko, co zrobiłem, to wzięcie przykładu Hello world i usunięcie pauzy i sysoutów. Oto kod:
serwera:
package guide;
import org.jeromq.ZMQ;
public class hwserver{
public static void main(String[] args) throws Exception{
// Prepare our context and socket
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket socket = context.socket(ZMQ.REP);
System.out.println("Binding hello world server");
socket.bind ("tcp://*:5555");
while (true) {
byte[] reply = socket.recv(0);
String requestString = "Hello" ;
byte[] request = requestString.getBytes();
socket.send(request, 0);
}
}
}
Klient:
package guide;
import org.jeromq.ZMQ;
public class hwclient{
public static void main(String[] args){
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket socket = context.socket(ZMQ.REQ);
socket.connect ("tcp://localhost:5555");
System.out.println("Connecting to hello world server");
long start = System.currentTimeMillis();
for(int request_nbr = 0; request_nbr != 10_000; request_nbr++) {
String requestString = "Hello" ;
byte[] request = requestString.getBytes();
socket.send(request, 0);
byte[] reply = socket.recv(0);
}
long end = System.currentTimeMillis();
System.out.println(end-start);
socket.close();
context.term();
}
}
Czy jest możliwe, aby rozwiązać ten kod i uzyskać kilka przyzwoitych liczb?
Inni odpowiedzieli, jak uzyskać szybsze numery - robiąc coś innego. Chcę tylko podkreślić, że twoje liczby, w wartościach bezwzględnych, niekoniecznie są złe: Średnio 0,5 ms na wiadomość triple tripped. W ramach tego cyklu wiadomość jest przetwarzana na język wysokiego poziomu, a przetworzona wersja jest odsyła- na. Porównaj to z liczbami, które robisz, wykonując prosty ping ICMP, i masz wrażenie, że masz na głowie TCP, JeroMQ i twój kod. –