|
|
|
|
|
by fmstephe
3554 days ago
|
|
If you want to push the performance of that approach (a single goroutine prioritising your messages for you a queue in and a queue out) I have built a set of lock-free queues on a ringbuffer. https://github.com/fmstephe/flib/tree/master/queues/spscq Those are only single producer single consumer (spsc) so not flexible enough for your needs right now, but I am working on expanding into multiproducer/multiconsumer variants which could be a good fit. The single producer/consumer queues get up to 100 million messages per second (on microbenchmarks) and I expect the multi variants to be above 10-20 million per second. I also have a handbuilt redblack tree which does around 10 million inserts/pops per second https://github.com/fmstephe/matching_engine/tree/master/matc... Although that is very specialised for another purpose, I would be happy to try stripping it down if you wanted that. But, start with the LLRB in that gist. |
|