SP protocols improved again!
Introduction As a result of some investigations performed in response to my first performance tests for my SP implementation , I've made a bunch of changes to my code. First off, I discovered that my code was rather racy. When I started bumping up GOMAXPROCS, and and used the -race flag to go test, I found lots of issues. Second, there were failure scenarios where the performance fell off a cliff, as the code dropped messages, needed to retry, etc. I've made a lot of changes to fix the errors. But, I've also made a major set of changes which enable a vastly better level of performance, particularly for throughput sensitive workloads. Note that to get these numbers, the application should "recycle" the Messages it uses (using a new Free() API... there is also a NewMessage() API to allocate from the cache), which will cache and recycle used buffers, greatly reducing the garbage collector workload. Throughput So, here are the new numbers