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
当前的指令簿-queue实现 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