1

只是想知道“go”编译器是否使用任何类型的优化,例如常量折叠。

https://en.wikipedia.org/wiki/Constant_folding

通过谷歌搜索,但找不到我正在寻找的答案。

4

2 回答 2

6

不断折叠 - 维基百科

常量折叠是在编译时识别和评估常量表达式而不是在运行时计算它们的过程。


Go 编程语言规范

常量表达式

常量表达式可能只包含常量操作数,并在编译时进行评估。


包大

import "math/big"

大包实现任意精度算术(大数)。


Go 常量表达式在编译时进行评估。用 Go 编写的 Go gc 编译器使用包big来评估数值常量表达式。

于 2017-10-24T23:18:10.530 回答
1

尝试编写一个简单的程序:例如。

package main

import "fmt"

func main() {
    fmt.Println(12345*1000)
}

现在将其编译为程序集

go tool compile -S examle.go

现在在结果中找到 12345,你就会得到答案。

于 2017-10-24T22:03:43.277 回答