【发布时间】:2015-02-02 19:29:59
【问题描述】:
有人能解释一下 GO 语言的架构吗,它比 Nodejs 更快吗?如果是的话,是什么让它更快,Go 是使用 C/C++ 开发的,那么,与 C/C++ 相比,GO 的性能是否胜出? C/C++ 和 Go 之间的唯一区别是更多的功能让开发人员更容易使用 GO 进行编码吗?
【问题讨论】:
有人能解释一下 GO 语言的架构吗,它比 Nodejs 更快吗?如果是的话,是什么让它更快,Go 是使用 C/C++ 开发的,那么,与 C/C++ 相比,GO 的性能是否胜出? C/C++ 和 Go 之间的唯一区别是更多的功能让开发人员更容易使用 GO 进行编码吗?
【问题讨论】:
请注意,Go 1.5 的编译器、汇编器、链接器和运行时将完全用 Go 编写。
我们的目标是让 Go 完全用 Go 编写,并消除代码库中的任何 C 代码。 C code is for Cgo 的唯一例外。
速度更多的是关于生成的本机代码和语言的简单性(没有通用性意味着需要跟踪的动态数据更少)
Go 并不总是很快:“Why is go language so slow?”。
它逐步改进,特别是在垃圾收集方面,stack management side。
Uvelichitel 下面提到x64 Ubuntu : Intel® Q6600® one core -- Computer Language Benchmarks Game
至于“Golang 架构”,这里并不适用(详见in this answer):
Go 没有像 Java JVM 这样的虚拟机。它像 c/c++ 一样直接编译成金属。
当前链接器执行两个可分离的任务。
- 首先,它将伪指令的输入流与重定位列表一起转换为可执行代码和数据块。
- 其次,它会删除死代码,将剩下的内容合并到一个图像中,解决重定位问题,并生成一些完整的程序数据结构,例如 runtime symbol table。
【讨论】: