I make a test to see the performance of select, and found the result is not 
good.

I make 1000 SeqQueue objects and run its messageLoop function (which does a 
small piece of work, and is listed as below) in 1000 separate go routines. 
The CPU cost is more than 20%.
If I make the ticker 1 second, the CPU cost can slow down to about 2%.

With pprof, I see the most top cost are methods related to 
runtime.selectGo, runtime.lock.

Who knows is there anything wrong in my case?

func (this *SeqQueue) messageLoop() {
var ticker = time.NewTicker(100 * time.Millisecond)
defer ticker.Stop()
for {
select {
case <-serverDone:
return
case <-this.done:
return
case <-ticker.C:
this.tickCounter += 1
case message := <-this.messages:
this.messageCounter += 1
_ = message
}
}
}



-- 
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