Go build 突然變得很慢?
Toby
Toby

最近在 Windows 更新之後不知道為甚麼 go build 變得很慢,我在想會不會是因為我的 SSD 快要死了所以讀寫速度掉不少,於是有一天我終於忍不住去跑 Crystal Disk Mark

好像沒啥問題的樣子

所以我就在想,會不會是 Go compiler 的 cache 問題,於是用以下 command 把 go cache 的 folder 換到一只直插 PCIE 的 SSD 上面

> go env -w GOCACHE=E:\tmp\gocache
> go env GOCACHE
E:\tmp\gocache 
cache 有出現在快 SSD 上,所以是有改成功

結果還是很慢。而且 go compiler 的 CPU usage 也卡在 10% 左右,然後我就注意到,另外大約 70% 的 CPU usage 都是被其他東西吃掉的。被甚麼吃掉?

幹你的 Windows Security

幹你的又是 Windows Security。它對 Go compiler 產出來的每個 binary cache file 掃描,這樣不慢才怪。Windows 自 Win7 之後從來就沒好過,要不是我間中要打遊戲我一早就換去用 Linux 了。

所以知道原因之後要解決就很簡單,就是去 Windows Security > 管理 把即時保護設定關掉

然後 go build 就回復到正常 build 速度了。