Scala高性能编程
  • 推荐0
  • 收藏3
  • 浏览1.4K

Scala高性能编程

Vincent Theron (作者)  杨云 (译者)

  • 书  号:978-7-121-31237-3
  • 出版日期:2017-04-20
  • 页  数:252
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Scala High Performance Programming
  • 原书号:9781786466044
  • 维护人:张春雨
Scala是一种表达能力非常强的语言,能够用非常简洁的代码表达丰富的业务含义。为了在生产上充分发挥Scala的能力,除了掌握其简洁的语法外,理解Scala在性能上的特点和优化点也是非常重要的事。
本书通过解析一个金融领域高频交易的实际例子,引领读者掌握如何对Scala程序(以及一般JVM程序)进行基准测试和性能分析,从而找出瓶颈。随后作者介绍了Scala语言、Scala标准库(尤其是集合库)以及Scalaz库里解决相应瓶颈的各种技巧。并行计算和分布式架构作为性能调优的重要手段,更是本书的重中之重,作者对Scala的并行计算和分布式架构中存在的问题都进行了充分的讨论和讲解,非常值得学习。
本书适合已经具有Scala编程基础、能够较好地使用Scala风格代码实现业务功能的程序员,作为在性能优化方面的深造阅读资料。
用函数式编程范式开发面向生产环境的高性能软件
前言
Scala是一个大胆的(audacious)编程语言,在JVM平台上,它将面向对象和函数式编程的概念融合到一起。Scala从一个相对小众的语言成长为了一个开发健壮且可维护的JVM应用的首选语言。然而,如果不深入了解这门语言和它提供的高级特性,编写高性能应用依然是一个挑战性的任务。
从2011年开始,我们就使用Scala来解决复杂的业务上的挑战,这些挑战常常有很高的性能要求。在本书中,我们分享了在这些年中所学到的东西及在编写软件中应用过的技术。我们在书中浏览了这门语言及其生态系统,包括周边工具和使用广泛的库。
我们编写这本书的目标是帮助你理解Scala语言提供给你的选择。你有权在书中收集必要的信息,以便在你自己的软件系统中做出更有知识基础的设计和实现决定。我们将不仅给你Scala之鱼,带你上路,还将传授渔鱼之技,并给你相关工具让你写出更函数式性能更高的软件。一路上,我们将通过精心设计的业务问题来激发技术讨论,这些业务问题将能让你回想起真实世界的问题。希望通过阅读本书,你能体会到Scala的强大能力,并找到合适的工具去编写函数式性能更好的应用。
本书的内容包含什么
第1章,通往性能之路,介绍了性能的概念及关于这个主题的一些重要术语。
第2章,在JVM上衡量性能,详细介绍了JVM上可用于衡量和评估性能的工具,包括JMH和Flight Recorder。
第3章,释放Scala的性能,对多项利用Scala语言特性来提升程序性能的技术和模式提供了引导。
第4章,探索集合API,讨论了Scala标准库提供的几个集合抽象。在这一章中我们专注于急切执行的集合。
第5章,惰性集合和事件溯源,是一个高级技术章节,讨论了两类延迟序列:视图和流。我们还对事件源范式进行了简要的介绍。
第6章,Scala的并发,讨论了编写健壮的并行代码的重要性。我们深入介绍了Scala标准库提供的Future API,并介绍了Scalaz库中提出的任务抽象。
第7章,高性能架构,作为最后一章,覆盖了前面章节讲过的主题的更深入的相关知识,并探索了使用CRDT作为分布式系统的构建块。这一章还探索了在面临高吞吐量时,使用free monald实现负载控制策略,以构建响应延时可控的系统。
你需要准备什么
你应该要在你的操作系统上安装好Java Development Kit 8版本或更高,以便你可以运行所有的示例代码。本书讨论了Oracle HotSpot JVM,并演示了在Oracle JDK中包含的工具。你应该还需要从http://www.scala-sbt.org/download.html获取最新版的sbt(在写作本书的时候,版本为0.13.11)。
这本书为谁而写
你应该具备关于Scala编程语言的基本知识,熟悉一些基本的函数式编程概念,并具有编写产品级JVM软件的经验。我们建议刚接触Scala和函数式编程的读者在读本书之前花一些时间学习其他的资源,以便可以从书中获取到更多的知识。两个杰出的以Scala为中心的资源是Artima出版社的《Scala编程》(Programming in Scala)及Manning出版社的《Scala函数式编程》(Functional Programming in Scala)。前一个最适用于具有坚实的面向对象Java编程知识,同时想要先理解这门语言然后理解函数式编程范式的开发者。后者则聚焦于函数式编程范式而少于讨论某一个具体语言中的概念。

目录

前言 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
当前的指令簿 - 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

本书勘误

印次
  • 页码:1  •  行数:8  •  印次: 1

    第一章序言第二段,【它视图】应为【它试图】

    _tison 提交于 2020/4/6 16:05:34
    张春雨 确认于 2021/4/15 17:04:55

读者评论

  • 书中代码排版有不少小问题,电子版的是否修改呢?

    alex023发表于 2018/5/13 0:55:54
  • 有啦:)

    张春雨发表于 2017/6/22 15:55:58
  • 说好的源码下载地址在哪儿呢

    taylorwang发表于 2017/6/17 9:24:21
  • 这本书会出电子版么?

    kaizener发表于 2017/5/16 10:50:52

相关图书

Unreal Engine 4可视化设计:交互可视化、动画与渲染开发绝艺

Tom Shannon (作者) 龚震宇 (译者)

Shannon回答了有关UE4可视化问题的常见问题,解决了从数据导入和处理到照明、高级材料和渲染等问题。他揭示了UE4与传统渲染系统重要的不同之处,即使它们使用...

 

虫术——Python绝技

梁睿坤 (作者)

本书以大数据应用方面常用的语言Python为基础,从网络爬虫的实现原理入手,逐步引领读者进入网络爬虫的世界。在各类爬虫框架中,将Scrapy作为轴心,从多个维度...

¥99.00

网络爬虫全解析——技术、原理与实践

罗刚 (作者)

本书介绍了如何开发网络爬虫。内容主要包括开发网络爬虫所需要的Java语法基础和网络爬虫的工作原理,如何使用开源组件HttpClient和爬虫框架Crawler4...

¥49.00

全栈数据之门

任柳江 (作者)

本书以数据分析领域最热的Python语言为主要线索,介绍了数据分析库numpy、Pandas与机器学习库scikit-learn,使用了可视化环境Orange ...

¥49.00

Druid实时大数据分析原理与实践

欧阳辰 刘麒贇 张海雷 高振源 许哲 (作者)

Druid 作为一款开源的实时大数据分析软件,最近几年快速风靡全球互联网公司,特别是对于海量数据和实时性要求高的场景,包括广告数据分析、用户行为分析、数据统计分...

¥59.00

大数据时代的算法:机器学习、人工智能及其典型实例

刘凡平 张启玉 刘刚 (作者)

本书介绍在互联网行业中经常涉及的算法,包括排序算法、查找算法、资源分配算法、路径分析算法、相似度分析算法,以及与机器学习相关的算法,包括数据分类算法、聚类算法、...

¥49.00