An open API service indexing awesome lists of open source software.

https://github.com/robaho/go-dispatch-test

test the relative performance of Go method dispatch to Java
https://github.com/robaho/go-dispatch-test

Last synced: 3 months ago
JSON representation

test the relative performance of Go method dispatch to Java

Awesome Lists containing this project

README

          

**About**

This package is a micro-benchmark which tests the performance of Go method dispatch, both interface based, and concrete type.

It has similar tests written using Java as well.

**Testing Methodology**

The tests use 'gobench' for Go and 'jmh' for Java. The tests were rung using IntelliJ support for both.

The tests were run using Go 1.11 and Java 1.8_181.

The tests were run on identical hardware and OS, iMac OS 12.7.5, 4 GHz Quad-Core Intel Core i7

Multiple runs were performed with very insignificant in the results.

**Results**

Go 1.22.4
```
goos: darwin
goarch: amd64
pkg: github.com/robaho/go-dispatch-test
cpu: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
BenchmarkIDispatch-8 535263746 2.118 ns/op
BenchmarkIDispatchPtr-8 675721244 1.773 ns/op
BenchmarkDispatch-8 1000000000 0.6953 ns/op
BenchmarkArrayParms-8 184212 6440 ns/op
PASS

```

Java build 21+35-LTS-2513

```
Benchmark Mode Cnt Score Error Units
TestJavaDispatch.TestArrayDispatch avgt 9 4367.196 ± 50.227 ns/op
TestJavaDispatch.TestDispatch avgt 9 0.942 ± 0.005 ns/op
TestJavaDispatch.TestIDispatch avgt 9 1.341 ± 0.040 ns/op
```

**Notes**

Interestingly, if the Go methods are declared with pointer receivers, the performance improves - which is a change
over previous Go versions where the performance was almost 3x worse.