go 语言性能

2018-03-22 11:47:34 +08:00
 miniliuke

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

4649 次点击
所在节点    Go 编程语言
45 条回复
miniliuke
2018-03-22 11:49:18 +08:00
刚接触,不是写个 c 死循环 cpu 都接近 100 吗?
lazyzml
2018-03-22 11:51:13 +08:00
萌新想问一句 死循环能测性能吗
KIDJourney
2018-03-22 11:59:06 +08:00
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-03-22 11:59:35 +08:00
feverzsj
2018-03-22 12:03:47 +08:00
go 性能和 java 差不多
miniliuke
2018-03-22 12:05:51 +08:00
@KIDJourney 这个是多线程吗?单线程怎么提高 cpu 利用率,我觉得 go 不应该这么低啊
KIDJourney
2018-03-22 12:08:57 +08:00
@miniliuke 我这边用 golang 和 c 跑单进程的死循环,cpu 使用是一样的。
miniliuke
2018-03-22 12:10:49 +08:00
@KIDJourney 也很低还是都很高?我这边 c 死循环就非常卡顿了,go 只有 7
miniliuke
2018-03-22 12:12:10 +08:00
@KIDJourney 还有难道是 windows 的锅?
KIDJourney
2018-03-22 12:13:06 +08:00
@miniliuke
都很高。
不清楚和系统有没有关系。
miniliuke
2018-03-22 12:26:01 +08:00
@KIDJourney 很难受感觉用了假的 go 语言
miniliuke
2018-03-22 12:30:43 +08:00
@KIDJourney 发现用 c 也一样,可能是系统问题吧:)
fwee
2018-03-22 12:33:53 +08:00
编译器会优化..你要上代码或汇编才知道
choury
2018-03-22 12:36:27 +08:00
编译器发现你这是个没用的死循环,直接给优化没了……
miniliuke
2018-03-22 12:38:12 +08:00
@choury 但是我用 c 也一样 cpu 占用 7,为什么呀?
SuperMild
2018-03-22 12:39:24 +08:00
现在的编译器、操作系统、CPU 会做很多优化,很多时候不能看表面。

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

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

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

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

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

© 2021 V2EX