From d887779eb6e69fa6f04aefb46c20cb508d3ee2a6 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Mon, 22 Jan 2018 20:28:09 +0100 Subject: [PATCH] Net-client: perf tuning - make read buf the size of socket receive buf --- java/libraries/net/src/processing/net/Client.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/java/libraries/net/src/processing/net/Client.java b/java/libraries/net/src/processing/net/Client.java index fffa2391b..61bdfa9be 100644 --- a/java/libraries/net/src/processing/net/Client.java +++ b/java/libraries/net/src/processing/net/Client.java @@ -219,7 +219,15 @@ public class Client implements Runnable { @Override public void run() { - byte[] readBuffer = new byte[2048]; // Ethernet MTU = 1500 B + byte[] readBuffer; + { // make the read buffer same size as socket receive buffer so that + // we don't waste cycles calling listeners when there is more data waiting + int readBufferSize = 2 << 16; // 64 KB (default socket receive buffer size) + try { + readBufferSize = socket.getReceiveBufferSize(); + } catch (SocketException ignore) { } + readBuffer = new byte[readBufferSize]; + } while (Thread.currentThread() == thread) { try { while (input != null) {