5

golang timer 性能消耗

 3 years ago
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.
neoserver,ios ssh client

golang timer 性能消耗

皿小草 2021-05-04 20:17:08 3
分类专栏: golang

由于 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++
	}
}

在这里插入图片描述


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK