I already responded. The Go version requires minimal memory for optimum 
performance. I’m sure a lot of that is due to the buffer chaining/reuse in the 
implementation. 

Still it is an important aspect regardless for systems level tools. 

Additionally, the Go version requires no warm-up. For this type of application 
that is not really a concern since it would be very long lived, but it 
definitely matters for short lived system tools. 

> On Oct 30, 2018, at 11:33 AM, Glen Newton <glen.new...@gmail.com> wrote:
> 
> I would also be interested in the memory comparison.
> 
> Glen
> 
>> On Tuesday, October 30, 2018 at 1:03:13 PM UTC, T L wrote:
>> OP really should compare the memory consumptions of the Java version and Go 
>> version. 
>> 
>> On Monday, October 29, 2018 at 4:53:52 PM UTC-4, robert engels wrote:
>>> 
>>> Hello Gophers,
>>> 
>>> I’ve been chastised in the past regarding some of my Go performance tests - 
>>> using Java as a baseline. In most of these micro-benchmarks Go has 
>>> performed more poorly than expected.
>>> 
>>> So, I ported nats (https://nats.io) message broker (which is written in Go) 
>>> to Java. It is available at github.com/robaho/jnatsd
>>> 
>>> This was an ideal test case, as only the server broker was ported, and all 
>>> of the client tools and benchmarks could be run unmodified.
>>> 
>>> So, using the Java based broker (under OpenJDK11 with Shenandoah) and the 
>>> nats bench with defaults:
>>> 
>>> without SSL, 3200k msgs per second
>>> with SSL, 900k msgs per second
>>> 
>>> using the Go based server (under Go 1.11) and the same test parameters:
>>> 
>>> without SSL, 5400k msgs per second
>>> with SSL, 2600k msgs per second
>>> 
>>> The latency numbers are much closer, but notice the much higher max in Java 
>>> (attributed to larger GC pauses). It is expected that in the above 
>>> throughput tests, more GC cycles, thus a much larger penalty.
>>> 
>>> Java: 
>>>   latency avg 191214 min 167079 max 936848 ns
>>> Go:
>>>   latency avg 188338 min 158997 max 588876 ns
>>> 
>>> So, Go shows VERY, VERY impressive performance numbers in a real-world 
>>> application, and aligns with my thoughts that Go is ideally suited to 
>>> replacing systems level software currently written in C/C++.
>>> 
>>> Some notes, the Java implementation uses some custom string processing 
>>> classes to improve performance, but does not use async IO (mainly since 
>>> doing so with SSL is a huge PITA). The Go server is also FAR more robust in 
>>> terms of ‘handling slow consumers, handling lots of clients, etc.”
>>> 
>>> I might try modifying the Java to use NIO direct buffers and channels to 
>>> observe any improved performance.
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
> 
> -- 
> 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.

Reply via email to