I’ve written lots of network service code. I understand what’s available. Actually, for a small number of clients threads are faster than async/nio. In this case there is only a single active thread during the test.
The main benefit of using nio is that you can avoid the java space to native copying by using a direct byte buffer. This would make things considerably faster, and put less pressure on the garbage collector. But to do this you need to use channels, and these are a pain with SSL - not impossible but certainly not trivial. I plan on reworking so of the code to use a buffer chain - which is what the Go version does. One thing to keep in mind, at 3-5 million operations a second, the difference is under 2 microsecs an op. With the GC pauses in Go being half that of Java, it doesn’t take too many pauses to account speed difference. > On Oct 30, 2018, at 7:17 AM, gerrit.jansen_van_vuu...@datastax.com wrote: > > Some notes on your java impl: > > You really want to use a framework for handling the connections and > threading, its tricky in java. > Your current implementation creates 2 new threads on each connection which is > wasteful and very expensive. > > For threading please see: > https://stackoverflow.com/questions/5483047/why-is-creating-a-thread-said-to-be-expensive > > You would either use: > https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html > or > go for https://netty.io/. > > For TLS > > Java's implementation is unfortunately slow :(. > (https://nbsoftsolutions.com/blog/the-cost-of-tls-in-java-and-solutions) > The solution is to either use something like HAproxy or try and use native > ssl libraries, https://netty.io/wiki/forked-tomcat-native.html. > > For a fairer comparison please do a rerun with the latest jre 11 and the > threads being created in a global Executor service > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.