http://science.raphael.poss.name/go-calling-convention-x86-64.html
一篇关于go的x86-64的函数调用的底层分析的长文,总结如下:
- go的所有的函数调用参数和返回值都走栈,比起走寄存器的c/c++和rust等语言要吃内存,让正常路径的程序产生比较大的开销。
- 跟gcc等编译器相比,go的默认编译器没有做一些调用方面的优化。
- defer是通过调用时注册一个callback实现了类似其他语言的finally的功能,因为没有堆分配,所以比较快。
- panic vs error 在性能方面没有明显的优劣,要具体问题具体分析。
一篇关于go的x86-64的函数调用的底层分析的长文,总结如下:
- go的所有的函数调用参数和返回值都走栈,比起走寄存器的c/c++和rust等语言要吃内存,让正常路径的程序产生比较大的开销。
- 跟gcc等编译器相比,go的默认编译器没有做一些调用方面的优化。
- defer是通过调用时注册一个callback实现了类似其他语言的finally的功能,因为没有堆分配,所以比较快。
- panic vs error 在性能方面没有明显的优劣,要具体问题具体分析。