Skip to content

Improve selection performance

Compare
Choose a tag to compare
@alphadose alphadose released this 24 May 11:27
· 116 commits to main since this release

Improve the performance of select by adding direct_send and optimistic first pass read approach

ZenQ Select() is now comparable to channels although not as fast for large batch sizes

To improve ZenQ's selection performance even beyond this, the goroutine pointer itself has to be mutated for even faster data transfer during selections

With Input Batch Size: 60 and Num Concurrent Writers: 4

Chan Select Runner completed transfer in: 55.375µs
ZenQ Select Runner completed transfer in: 56.125µs
====================================================================

With Input Batch Size: 600 and Num Concurrent Writers: 4

Chan Select Runner completed transfer in: 181.334µs
ZenQ Select Runner completed transfer in: 432.75µs
====================================================================

With Input Batch Size: 6000 and Num Concurrent Writers: 4

Chan Select Runner completed transfer in: 936.042µs
ZenQ Select Runner completed transfer in: 4.410916ms
====================================================================

With Input Batch Size: 600000 and Num Concurrent Writers: 4

Chan Select Runner completed transfer in: 140.836375ms
ZenQ Select Runner completed transfer in: 380.546875ms
====================================================================