【问题标题】:does golang compiler use constant folding?golang 编译器是否使用常量折叠?
【发布时间】:2018-08-21 01:42:56
【问题描述】:

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

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

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

【问题讨论】:

  • 你有什么具体的想法吗?如果您只是在寻找“是”或“否”,答案是“是” - 但仅此信息几乎是无用的,因为有许多极端情况可能会或可能不会发生。

标签: go compiler-optimization constantfolding


【解决方案1】:

Constant folding - Wikipedia

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


The Go Programming Language Specification

Constant expressions

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


Package big

import "math/big"

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


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

【讨论】:

    【解决方案2】:

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

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

    现在将其编译为程序集

    go tool compile -S examle.go
    

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

    【讨论】:

    • 欣赏这个例子,但这并没有给出“是”或“否”的问题答案。
    猜你喜欢
    • 2012-01-24
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多