Hi, The example file BaseXClient uses an unbuffered stream to write to the socket: out = socket.getOutputStream(); void send(final String s) throws IOException { for(final byte t : s.getBytes()) out.write(t); out.write(0); } This yields extremely bad performance, especially for large queries (every single call to write will trigger a separate system call to the OS, which in turn will trigger a separate TCP segment on the wire). On a typical Ethernet, this means that 100 minimum sized packets are transmitted rather than a single packet to transmit a 100-byte query. On a different note, why is BaseXClient not part of the "official" BaseX API, or at least provided as part of the distributed .jar files in an org.basex.* package? - Godmar