August 5th, 2015
前言
小孩出生後難得可以參加研討會GTG#14,主要也是想看看Go 1.5的一些新功能介紹.
第一階段: tka - 用 Golang 幫 Ruby 加速
筆記:
- buildmode=c-shared:
- 啟動版本: Golang 1.5 beta2
- 環境: linux / android (win/mac 不支援)
- 資料結構不同:
- GoInt8 -> signed char
- GoString -> char *p, int length
- Ruby FFI:
- ruby package to load dynamic libraries.
呼叫方式:
require 'ffi'
require 'benchmark'
module LibGo
extend FFI::Library
ffi_lib './libgo.so'
// (fn) (input) (output)
attach_function :fib, [:int], :int
end
效能比較
- 簡單功能 Ruby > golang 五倍
- fibinacci Golang > Ruby 二十倍
參數挑選
- 使用GoString 與 使用C.String
- 結果:
- C.String 會比較快
- 原因:
- Ruby 轉 Golang string 需要配置兩個參數 (char * 與 length)
- 結果:
Q&A
- C-Shared GC
- Not tested yet.
- C++ binding with Go
- 速度應該沒差
其他:
有介紹到的golang Language package看起來很好用
第二階段: 用 Go 寫前端, GopherJS 優劣分析
Slide:
筆記
** Fullstack Go**
- GopherJS
- Goroutines works in JS
- JS s signle-thread
- GopherJS provide roroutine scheduler.
Examples:
- DOM
- Callback
效能:
測試五千個goroutine來選轉圖片是可以接受.
Gocha
- No dead code elimation
- Use js not fmt to reduce size.
- Callback should not block
- JS is single thread. (main thread)
會後心得:
- 使用brew 來管理Go版本,好像很酷