The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
xiadada

Go 改一行文件也要编译一次要 30s

  •  
  •   xiadada · Mar 11, 2020 · 6206 views
    This topic created in 2433 days ago, the information mentioned may be changed or developed.

    项目是分拆到多个仓库的那种,然后会 import 很多公共的 pb, 编译完之后的文件有 366M。。。我看 import 的包都被 cache 了,卡在 link 的时间比较长。这个是什么原因?符号太多?

    go build -v -x -ldflags="-v=2" .

    最后的输出

    12.08 symsize = 0 14.13 pclntab=96705222 bytes, funcdata total 22521356 bytes 14.73 dodata 14.94 symsize = 0 15.10 symsize = 0 15.73 dynreloc 16.19 dwarf 22.82 asmb 22.82 codeblk 23.84 datblk 23.93 reloc 25.26 sym 25.26 headr 25.36 cpu time 4611380 symbols 3060492 liveness data

    然后会有很多 mark text, 和 removing method 条目打出来。。。

    有大佬懂得吗

    23 replies  •  2020-03-14 12:44:00 +08:00
    reus
    reus
    Mar 11, 2020❤️2
    1
    30 秒还想怎样?换成是 llvm / gcc 的,这么大的项目,可能得 30 分钟。
    Erskine
    Erskine
    Mar 11, 2020 via Android
    2
    366M ?这是把一些资源都内置进去了?
    rrfeng
    rrfeng
    Mar 11, 2020
    3
    366M 的话 30s 真的很快了…
    QingXuJiaZhi
    QingXuJiaZhi
    Mar 11, 2020❤️1
    4
    一直在想,如果 linux 软件大部分用 go 重写(当然不可能),那肯定是 Gentoo 的春天。
    my3157
    my3157
    Mar 11, 2020
    5
    可能被 golang 惯坏了, 试试 rust // golang 有编译缓存的, 应该是大量 pb 的原因
    dog82
    dog82
    Mar 11, 2020
    6
    begoo 有个 fsnotify
    Leigg
    Leigg
    Mar 11, 2020
    7
    import 了什么玩意儿,三百兆,好好检查一下,少用私人库
    DonaidTrump
    DonaidTrump
    Mar 11, 2020 via iPhone
    8
    很想知道什么项目编译完要 300 多 M
    LokiSharp
    LokiSharp
    Mar 11, 2020 via iPhone
    9
    想知道你源码多大
    guonaihong
    guonaihong
    Mar 11, 2020
    10
    你这至少要 100w 行代码编译吧?
    herozzm
    herozzm
    Mar 11, 2020 via Android
    11
    web 项目才是痛苦 改点东西就得重启,没法热更新
    chenset
    chenset
    Mar 11, 2020
    12
    golang 也有 plugin, https://golang.org/pkg/plugin/
    xfriday
    xfriday
    Mar 11, 2020
    13
    rust release 模式的话得 2 小时不止
    janxin
    janxin
    Mar 12, 2020
    14
    @herozzm web 项目基本无状态,重启就重启吧,反正可以自动实现
    ytll21
    ytll21
    Mar 12, 2020
    15
    @xfriday 什么项目居然要 2 小时。。。厉害厉害
    Sasasu
    Sasasu
    Mar 12, 2020
    16
    c++ 界的解决办法:动态链接
    TangMonk
    TangMonk
    Mar 12, 2020
    17
    估计编译了一堆 assets
    GeminiPro
    GeminiPro
    Mar 12, 2020
    18
    感觉比 cpp 快。。。
    GreyYang
    GreyYang
    Mar 12, 2020❤️1
    19
    拆成 go plugin 用链接 so 的方法可能可以把需要重新编译的部分减少
    soseek
    soseek
    Mar 12, 2020 via Android
    20
    @herozzm 可以呀,为什么不能热更新?
    herozzm
    herozzm
    Mar 12, 2020
    21
    @soseek 没成熟的吧,比如我的二进制运行需要 10s 才会启动好,如果热更新?
    就算用老的二进制顶住,在启动新的二进制文件的时候,老的要退出,10s 的时间访问就会有问题
    soseek
    soseek
    Mar 14, 2020 via Android
    22
    @herozzm 可以
    xfriday
    xfriday
    Mar 14, 2020
    23
    @herozzm 参考 k8s 的 liveness、readiness 探针
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4018 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 07:07 · PVG 15:07 · LAX 23:07 · JFK 02:07
    ♥ Do have faith in what you're doing.