前言

小孩出生後難得可以參加研討會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:

Full-stack go with GopherJS from Poga Po

筆記

** 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版本,好像很酷

參考資料:


Evan

Attitude is everything