Note for Golang Taipei Gathering #24
- Links
鮑承佑: go-swagger 踩雷分享
寫 swagger.yaml
可以 generate golang code for web server
Genji Lu: Golang GC 演算法
- Slides
- Tri-color GC
- mark phase & sweep phase
- Write Barrier
- Go GC: Prioritizing low latency and simplicity - The Go Blog
- Golang 1.5 時的文章,以降低 latency 為主。
- Golang 1.5 公佈了這個 low latency 為主的 Garbage Collector
- tradeoff
- Tricolor GC 能達到極短暫的 pause time,但相對的付出代價
- heap size 不可預期性
- 頻繁產生新物件時,throughput 會較低,CPU 時間花在 GC 上的比例較高
- 潛在風險:記憶體破碎
- Tricolor GC 能達到極短暫的 pause time,但相對的付出代價
- 實測 GC example code
GODEBUG=gctrace=1
$ GODEBUG=gctrace=1 go run main.go
- runtime/pprof
- net/pprof
- http://127.0.0.1:7777/debug/pprof
- Golang 對 GC 的優化
- 1.6: 在 rescan stack 階段會檢查自從上次 STW (stop-the-world) 之後該 goroutine 是否有執行過,否則不 scan 該 stack。
- 1.7: 用一個 list 紀錄所有自從上次 STW 以後有執行過的 goroutine,在 rescane 階段不用 scan 所有 stack。
- 1.8: 修改 write barrier 消除 stack re-scan 的必要性。
- Related materials
- GODEBUG | Dave Cheney
- [译]GC专家系列1:理解Java垃圾回收 - 牧曦之晨 - SegmentFault
-
STW:「回到垃圾回收上,在開始學習GC之前你應該知道一個詞:stop-the-world。不管選擇哪種GC算法,stop-the-world都是不可避免的。Stop-the-world意味著從應用中停下來並進入到GC執行過程中去。一旦Stop-the-world發生,除了GC所需的線程外,其他線程都將停止工作,中斷了的線程直到GC任務結束才繼續它們的任務。GC調優通常就是為了改善stop-the-world的時間。」
-
Linzy: 介紹 Testify 的 mock 功能
- Slides
- https://github.com/stretchr/testify
- A sacred extension to the standard go testing package
- https://github.com/stretchr/testify#mock-package
mock.AnythingOfType("string")
- Chain your expectations
- Verify your expectations
mock.AssertCalled(t, "foo", "bar")
Stan Lo: Rooby: A new object oriented language written in Go aim at developing microservice efficiently
是這篇寫自己的程式語言(For Rubyist) – Stan Lo – Medium 的作者本人耶
- Slides
- GitHub - goby-lang/goby: Goby (Rooby) is a new object oriented language written in Go aim at developing microservice efficiently.
- 從 Rooby 改名叫 Goby 了,因為被罵翻了,一堆人寫信或開 issue 建議改名 XDDD
- https://goby-lang.github.io/goby/
- 目的是想用 Ruby 的語法來做到像 Golang 一樣的 High Performance 的 Language
- Goby is not
- A new implementation of Ruby
- Syntax sugar for Golang.
- Why Golang?
- 已經對 Golang 有興趣一陣子
- 效能不錯
- GC 和底層的事可以交給 Golang,自己則專心在 VM 上面的開發
- 上禮拜五辭職來全職開發這個語言,希望大家可以捐助一點錢 XD
- 目前開發完成度大概是 first release 的 70%
- 歡迎大家送 PR,就算是改個錯字也可以。
Share
Donation
如果覺得這篇文章對你有幫助, 除了留言讓我知道外, 或許也可以考慮請我喝杯咖啡, 不論金額多寡我都會非常感激且能鼓勵我繼續寫出對你有幫助的文章。
If this blog post happens to be helpful to you, besides of leaving a reply, you may consider buy me a cup of coffee to support me. It would help me write more articles helpful to you in the future and I would really appreciate it.