Golang 的靜態編譯有哪些值得討論的缺點?

時間 2021-05-30 20:07:47

1樓:

沒啥缺點。動態鏈結技術的出現是有歷史背景,單機記憶體多少k多少M,所以程式每次都把依賴庫(大家又是公用的乙個庫)copy然後再編譯鏈結,就比較浪費空間和資源,所以提出動態鏈結庫。但是這都馬上18年了,公司伺服器我們一般直接128G RAM,自己用的開發機基本上也是8G保底,多幾M,幾十M,但能夠減少各種動態鏈結帶來的困擾,這簡直是完美

2樓:

反而覺得靜態編譯是 Go 的一大賣點。Go 粉承認嗎?

如果嫌檔案太大那不如去噴 Docker, 乙個服務程式乙個 container, 部署一次乙個 image, 大多數人都這麼玩,還很嗨。

3樓:

這個還真是沒啥可吐槽的,單擊你搞搞動態鏈結隨便玩,多台Server部署的時候麻煩到吐。靜態編譯多好,送你一人上戰場就好了

4樓:李遙

在2023年還考慮動態庫的那一點點額外的記憶體開銷,等於站在歷史的對立面了

何況,私有部署的動態庫也是等價於靜態庫的;而全域性部署的動態庫是作業系統的基石,牽一髮而動全身。在沒有測試過所有客戶程式的相容性之前,公升級全域性部署的動態庫絕對是要慎之又慎的

5樓:馬遠鵬

看你的業務吧,

請求量高的地方一台伺服器往往只分配給乙個業務,你把乙個業務的介面寫乙個程式裡面,並不會浪費多少空間

請求量少的,隨你怎麼玩都可以,反正沒有效能瓶頸

6樓:

私以為go在某種程度上也是做到了「write once, run everywhere 」, 而且先決條件只有兩個:

同架構以及不是太舊的glibc。

對以開發和維護也是挺好的。省去了很多煩惱。

7樓:James Swineson

twitter.com/mattrogish/status/907606669659688961聽說你們動態鏈結語言使用者記憶體小?

8樓:狼大人

對於 Go 的主戰場(伺服器開發)來說,乙個程式如果不能吃滿 OS 的所有記憶體和 CPU 都是不稱職的,所以 Python multiprocess 再好也要被 Go 吊打。而只跑乙個程序的話,動態鏈結怎麼省得出記憶體?

9樓:淘李福

我立個flag吧,吐槽靜態編譯的人都是不了解分布式系統的部署難度的,如果只在你自己的開發機器上搞搞helloworld,那的確還是動態鏈結庫省事

10樓:范子逸

GO有不少缺點,但是靜態編譯這個真不是。

現在連手機的記憶體都動輒2G了,靜態編譯多個幾M真的不算什麼,但是極大地簡化了開發的工作量。在Windows版本上版本相容基本沒啥大問題,MS都替你做好了;可是在Linux上,以前為了照顧多個版本的OS,選擇依賴庫版本的時候需要盡量照顧最老的OS。安裝軟體前還需要安裝依賴庫和依賴庫依賴的庫。

不能用包管理軟體安裝的還需要帶原始碼在目標機器上編譯。

用了靜態編譯,世界美好多了...

11樓:euphoria

雖然沒用Go做什麼大專案,也不是 Go 語言記憶體管理的高手,但做過的一些專案中, Go 語言占用記憶體一直都很少,除非運算元據庫時,可能有短暫的峰值,而且 Go 語言的指標就提供了一種管理記憶體的可行方式,雖然沒有 C 語言那麼霸道,但也沒那麼危險

有哪些程式語言有靜態 編譯期的duck typing

羊牮 f inline 函式通過靜態解析就可以做到,這是編譯期完成的事情,而且不需要用到反射。具體語法見另乙個答案 各個程式語言都有哪些 亮點 知乎 Belleve Wiki 上面的例子有 OCaml OOP 的部分 和 Go Purescript 的 Row polymorphism 也可以看作是...

Golang常用包有哪些?

尚墨 不請自來,以下是我自用的庫。沒怎麼用過,但也收集了。astaxie beego gin gonic gin astaxie beego 茹姐 The Go Programming Language golang官網提供的package,如果是初學者,看這個就可以了,但是是英文的,而且沒有太多的...

有哪些不錯的golang開源專案?

skoo 推薦乙個我們最近正在開源的專案 https github.com erda project erda 專案有點大,初學者可能不太友好。 Liuyl 可以寫乙個簡單的rpc,從server對client的高效能處理開始,你會學到go關於底層tcp的處理,也能學到常見web框架是怎麼處理htt...