2018年7月19日 星期四

Go重構帶來 23X 效能的過程

非常值得一讀的效能優化文章, 沒有時間可以跳到最後面的 take away
 作者由於研讀了一篇關於 good code and bad code 的指引, 由於該篇文章文章提及了”效能”這件事, 作者便開始了驚人的優化過程, 最終達到 23X 的執行效能
看似簡單且輕描淡寫的過程, 其實可以看出功力深厚, 這些做法包含了大量的專業知識, 以下為其使用的技巧
1. 確認單執行緒效能 (不能為了平行而平行, 而忽略 overhead 嚴重性)
2. 使用 slice 避免記憶體配置 (能 in memory 處理的要盡可能這麼作, 記憶體配置成本高昂)
3. 以簡單的方式取代 regex (你需要的功能比你認為的少)
4. custom trim 實作
5. batching (批次處理能有效節省單次 overhead)
6. 手動指定 worker thread 數目 (依照系統調整執行緒數目那避免 thread racing 造成的 context switch)
7. custom lexical parser 實作(強大的工具伴隨複雜的行為)
這過程使用了涵蓋大量出於程式語言, 作業系統, I/O 行為, 效能分析, 計算架構等等諸多方面的知識, 效能優化由於需要分析諸多不同層面的問題, 因此是一門需要長期耕耘各種領域的專業

沒有留言:

Chisel 學習筆記 - Scala 與 Chisel 基礎語法

標題為筆記, 但這篇比較屬於心得 延續 上一篇 的環境建立, 這次計劃藉由 Jserv 最新的 課程安排 來學習 Chisel, 當然個人目標是能夠按照 Jserv 的課程規劃在 期限之內 完成 Lab 3, 由於個人並非 digital designer (現在這年紀也算老貓學...