go 语言性能

2018 年 3 月 22 日
 miniliuke

为什么我写了一个死循环,结果在 windows 下 cpu 利用率只有 7%......

5643 次点击
所在节点    Go 编程语言
45 条回复
miniliuke
2018 年 3 月 22 日
刚接触,不是写个 c 死循环 cpu 都接近 100 吗?
lazyzml
2018 年 3 月 22 日
萌新想问一句 死循环能测性能吗
KIDJourney
2018 年 3 月 22 日
try this:

```
package main

import (
"runtime"
"sync"
)

func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
wg := sync.WaitGroup{}
for i := 0; i < runtime.NumCPU(); i ++ {
wg.Add(1)
go func() {
for {

}
wg.Done()
}()
}
wg.Wait()
}
```
KIDJourney
2018 年 3 月 22 日
feverzsj
2018 年 3 月 22 日
go 性能和 java 差不多
miniliuke
2018 年 3 月 22 日
@KIDJourney 这个是多线程吗?单线程怎么提高 cpu 利用率,我觉得 go 不应该这么低啊
KIDJourney
2018 年 3 月 22 日
@miniliuke 我这边用 golang 和 c 跑单进程的死循环,cpu 使用是一样的。
miniliuke
2018 年 3 月 22 日
@KIDJourney 也很低还是都很高?我这边 c 死循环就非常卡顿了,go 只有 7
miniliuke
2018 年 3 月 22 日
@KIDJourney 还有难道是 windows 的锅?
KIDJourney
2018 年 3 月 22 日
@miniliuke
都很高。
不清楚和系统有没有关系。
miniliuke
2018 年 3 月 22 日
@KIDJourney 很难受感觉用了假的 go 语言
miniliuke
2018 年 3 月 22 日
@KIDJourney 发现用 c 也一样,可能是系统问题吧:)
fwee
2018 年 3 月 22 日
编译器会优化..你要上代码或汇编才知道
choury
2018 年 3 月 22 日
编译器发现你这是个没用的死循环,直接给优化没了……
miniliuke
2018 年 3 月 22 日
@choury 但是我用 c 也一样 cpu 占用 7,为什么呀?
SuperMild
2018 年 3 月 22 日
现在的编译器、操作系统、CPU 会做很多优化,很多时候不能看表面。

另外,完成同一个任务,CPU 利用率低才是效率高。7%的利用率就完成了别人需要 100%利用率才能完成的任务,你应该高兴才对。
miniliuke
2018 年 3 月 22 日
@SuperMild 死循环也谈不上优化吧......而且这种没有 io 瓶颈的计算还是 cpu 占用高点好吧......主要占用连 10 都不到......
dobelee
2018 年 3 月 22 日
死循环判断性能。。能不能再荒谬一点。
miniliuke
2018 年 3 月 22 日
@dobelee 不是评判性能,只是看一下死循环能利用多少 cpu
weizhen199
2018 年 3 月 22 日
你看下是吃了一个核还是总的 cpu

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/440364

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX