5
golang timer 性能消耗
source link: https://blog.csdn.net/oqqYuan1234567890/article/details/116404039
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
由于 golang 的 timer 是高精度定时器,所以在使用 timer 的时候,需要注意精度与性能的平衡
下面跑几个简单的 demo, 绝对值没有参考意义,主要观察其趋势变化
定时器间隔 (ms)1101001000CPU 占用6.6%1.8%0.2%0%
可以发现,当间隔到了 1ms 的时候,CPU 会占用到 7%, 而间隔到了 1s, 则基本不占用 CPU。这是因为 go 的 timer 是高精度的定时器,相关的 github 讨论如下:https://github.com/golang/go/issues/41699
package main
import (
"time"
)
func main() {
ticker := time.NewTicker(1 * time.Millisecond)
i := 0
for range ticker.C {
i++
}
}
package main
import (
"time"
)
func main() {
ticker := time.NewTicker(10 * time.Millisecond)
i := 0
for range ticker.C {
i++
}
}
package main
import (
"time"
)
func main() {
ticker := time.NewTicker(100 * time.Millisecond)
i := 0
for range ticker.C {
i++
}
}
package main
import (
"time"
)
func main() {
ticker := time.NewTicker(1000 * time.Millisecond)
i := 0
for range ticker.C {
i++
}
}
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK