高性能 Scala 高性能Scala

文森特·西倫 (Vincent Theron), 邁克爾·迪亞芒 (Michael Diamant)

  • 出版商: 電子工業
  • 出版日期: 2017-05-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 240
  • 裝訂: 平裝
  • ISBN: 7121312379
  • ISBN-13: 9787121312373
  • 相關分類: JVM 語言
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

Scala是一種表達能力非常強的語言,能夠用非常簡潔的代碼表達豐富的業務含義。為了在生產上充分發揮Scala的能力,除了掌握其簡潔的語法外,理解Scala在性能上的特點和優化點也是非常重要的事。本書通過解析一個金融領域高頻交易的實際例子,引領讀者掌握如何對Scala程序(以及一般JVM程序)進行基準測試和性能分析,從而找出瓶頸。隨後作者介紹了Scala語言、Scala標準庫(尤其是集合庫)以及Scalaz庫里解決相應瓶頸的各種技巧。並行計算和分佈式架構作為性能調優的重要手段,更是本書的重中之重,作者對Scala的並行計算和分佈式架構中存在的問題都進行了充分的討論和講解,非常值得學習。本書適合已經具有Scala編程基礎、能夠較好地使用Scala風格代碼實現業務功能的程序員,作為在性能優化方面的深造閱讀資料。

目錄大綱

前言iX 
1高性能之路1 
性能的定義2 
高性能軟件2 
硬件資源3 
時延和吞吐率4 
瓶頸5 
性能總結5 
平均數的問題6 
百分位數來救場8 
指標蒐集9 
用基準數據( benchmark)來衡量性能9 
通過Profiling來定位瓶頸10 
結合基準測試和profiling 10 
案例分析11 
工具鏈11 
小結12 


2在JVM上度量性能13 
金融領域一瞥13 
意外的市場波動毀掉了利潤16 
重現故障17 
吞吐量基準測試17 
時延基準測試20 
定位瓶頸25 
微基準取得大進步42 
小結49 


3釋放Scala的性能51 
值類52 
字節碼表示52 
性能考慮54 
標記類型——值類的一種替代品55 
專門化57 
字節碼表示58 
性能考慮60 
元組65 
字節碼表示65 
性能考慮66 
模式匹配68 
字節碼表示68 
性能考慮70 
尾遞歸75 
字節碼表示78 
性能考慮79 
Option數據類型83 
字節碼表示83 
性能考慮84 
案例研究——性能更高的Option 85 
小結89 


4探索集合API 91 
高吞吐量系統-改進指令簿91 
理解過去實現上的折中- list實現92 
當前的指令簿- qu eue實現101 
通過惰性計算來提升取消操作的性能104 
歷史數據分析114 
滯後時序收益率(lagged time series returns) 114 
處理多個收益率序列122 
小結127 


5惰性集合及事件溯源129 
提升用戶報表生成速度129 
深入報表生成代碼130 
使用視圖提速報表生成133 
視圖的注意事項141 
打包報表生成結果145 
重新思考報表架構146 
Stream概覽149 
事件變換152 
構建事件源管道158 
馬爾可夫流式鏈162 
流的注意事項166 
小結169 


6 Scala的並發171 
並行回測(backtesting)策略171 
探索Future 173 
Future和crazy ideas 177 
Future使用時的考量179 
提交執行妨礙性能185 
處理阻塞調用和回調188 
ExecutionContext和阻塞調用189 
用Promise轉化回調193 
受命進一步提升回測性能196 
介紹Scalaz Task 197 
用Task為交易日模擬建模204 
總結回測209 
小結210 


7高性能架構211 
分佈式自動化交易員(Distributed automated traders) 211 
分佈式架構概述212 
第一次嘗試分佈式自動化交 系統212 
引入CRDT 214 
CRDT和自動化交易系統219 
當餘額不足時220 
免費交易策略性能提升222 
為交易策略做基準測試222 
無界隊列(unbounded queue)的危險225 
應用背壓(back pressure) 226 
應用負載控制策略227 
Free monad 233 
小結240