Golang Go语言性能怎么样

发布于 1周前 作者 phonegap100 最后一次编辑是 5天前 来自 Go语言

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


Golang Go语言性能怎么样
46 回复

刚接触,不是写个 c 死循环 cpu 都接近 100 吗?

更多关于Golang Go语言性能怎么样的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


萌新想问一句 死循环能测性能吗

try this:

<br>package main<br><br>import (<br> "runtime"<br> "sync"<br>)<br><br>func main() {<br> runtime.GOMAXPROCS(runtime.NumCPU())<br> wg := sync.WaitGroup{}<br> for i := 0; i &lt; runtime.NumCPU(); i ++ {<br> wg.Add(1)<br> go func() {<br> for {<br><br> }<br> wg.Done()<br> }()<br> }<br> wg.Wait()<br>}<br>

go 性能和 java 差不多

这个是多线程吗?单线程怎么提高 cpu 利用率,我觉得 go 不应该这么低啊

我这边用 golang 和 c 跑单进程的死循环,cpu 使用是一样的。

也很低还是都很高?我这边 c 死循环就非常卡顿了,go 只有 7

还有难道是 windows 的锅?


都很高。
不清楚和系统有没有关系。

很难受感觉用了假的 go 语言

发现用 c 也一样,可能是系统问题吧:)

编译器会优化…你要上代码或汇编才知道

编译器发现你这是个没用的死循环,直接给优化没了……

但是我用 c 也一样 cpu 占用 7,为什么呀?

现在的编译器、操作系统、CPU 会做很多优化,很多时候不能看表面。

另外,完成同一个任务,CPU 利用率低才是效率高。7%的利用率就完成了别人需要 100%利用率才能完成的任务,你应该高兴才对。

死循环也谈不上优化吧…而且这种没有 io 瓶颈的计算还是 cpu 占用高点好吧…主要占用连 10 都不到…

死循环判断性能。。能不能再荒谬一点。

不是评判性能,只是看一下死循环能利用多少 cpu

你看下是吃了一个核还是总的 cpu

我看了一下没有一个核超过 20

8 核 16 线程的 cpu 吧

什么都没有的空循环,编译器会给优化吧。写个算哈希值的挖矿算法的循环试试吧。

你这 CPU 是 6 核 12 线程的吧 ? 8700 ?

前三位基本上 C,C++,Rust

你的死循环只会在一个核上执行,因为 Windows 的 CPU 监测是针对所有的 CPU,在多核情况下 Windows 单核跑满也不会导致 CPU 使用率 100%的

好像是的:)但是一个核都没跑满,感觉有点奇怪

我刚刚在 Mac 上面试了下死循环是能导致 100%的 CPU 使用率的

https://imgur.com/fBkIjib
https://imgur.com/O9CUCNV

简单点说,5 台 java 服务器,1 台 go 服务器搞定。

对,我也是在 mac 上测试的,

不至于这么夸张吧

至少内存上是这样,我遇到过同样功能内存差 20 倍

的确 go 内存用的是真少,不涉及 io 的话,感觉性能与 c 相当(自我感觉)

大多数情况下,java 除非已经 jit 了,才可能和 go 差不多

毕竟机器码,但是我看 benchmark 里有些算法 go 消耗的时间比 java 长,而且长不少,不知道为什么

任何一门语言都是能导致 CPU 100%的,事实上以下 Python 将导致 CPU 100%
python<br>while 1:<br> i = 0<br>
因为没有任何 IO 操作的程序将会一直使用 CPU 而不阻塞。
是否能够让 CPU100%不是判断一门语言是否高效的正确方法,判断一门语言是否高效可以使用以下两方面来判断:
1. CPU 的使用是否高效
2. 内存使用是否高效

Go 语言因为没有虚拟机,所以同等数量的指令相较于 Java 和 Python 可以做更多的事情,同样是因为虚拟机的存在,所以 Java 在运行时要占用更多的内存。
除此之外,对于网络 IO 密集型程序,Go 提供了协程这个解决方案,这也是 Go 语言性能优秀的一部分。对于目前很多的应用而言,其主要瓶颈在于 IO,Go 语言解决了这方面的问题。

受教了,但是 python 理论上好像不能 100%,具体忘记了…其他语言理论上应该可以达到

你是想问为啥你的代码不能把 cpu 跑满吧?

顶 37, 语言性能的好坏是指同样软硬件资源下,对资源的使用效率, 假设 java 能单位时间处理 100 个请求,而 c 能处理 200, 可以说 c 更高效一点。 cpu 啥语言都能跑满的。

对啊,死循环应该能跑到,就算不到 100,但是个位数也太低了

想烧坏电脑请浇油点火💀

直接上代码,莫不是在死循环里面 Println 了吧?

空的死循环

好厉害啊~牛皮吹的好厉害啊

针对Golang(Go语言)的性能问题,以下是我的专业解答:

Go语言性能卓越,主要体现在以下几个方面:

  1. 编译速度快:Go语言采用单一编译单元、并行编译和增量编译等技术,编译速度非常快,能显著提高开发效率。
  2. 执行效率高:Go语言生成的机器代码执行效率高,接近于C/C++,适合开发高性能应用。
  3. 并发处理强大:Go语言内置轻量级的goroutine和channel机制,使得并发编程变得简单且高效,能够充分利用多核处理器的优势。
  4. 内存管理高效:Go语言使用垃圾回收机制来管理内存,减少了内存泄漏和悬挂指针等问题,同时提供了内存分析工具帮助开发者优化内存使用。

此外,Go语言还具有丰富的标准库、跨平台支持以及性能稳定等特性。其标准库涵盖了网络编程、文件处理、加密解密、并发编程等各个方面,跨平台支持则使得开发者可以在不同平台上运行相同的代码。

综上所述,Go语言在性能方面表现优异,特别适用于高并发、高性能的场景,如网络编程、服务器开发等。对于想要提升程序性能的开发者来说,Go语言无疑是一个值得考虑的选择。

回到顶部