序
说到高性能计算,你想到的可能是巨型集群,它们模拟复杂的天气现象,或者试图理解收集到的关于遥远星球的数据中隐藏的信号。大家很容易错误地认为,只有构建专用系统的人才需要考虑代码的性能特征。只要拿起本书,你便在学习编写高性能代码所需理论和实践的道路上迈出了第一步。掌握如何构建高性能系统,对每位程序员都有益。
显然,如果不能编写高性能代码,那么在开发某些应用程序时你将寸步难行。如果你正在开发这样的应用程序,那么本书就是为你而写的,但从本书受益的应用程序远不止这些。
我们通常认为,新技术是驱动创新的动力,而我对能够将技术使用门槛降低多个数量级的方式情有独钟。一项技术的时间或计算成本降低为原来的1/10后,其应用范围将突然之间大到超乎想象。
我在十多年前的工作中首次意识到了这一点。当时我在一家社交媒体公司工作,通过分析若干太字节的数据来确定社交媒体用户单击小猫图片的次数多还是单击小狗图片的次数多。
当然是单击小狗图片的次数多,小猫不过是浪得虚名而已。
在那个时候,这种使用计算时间和基础设施的方式简直是离经叛道!通过使用原本只用于高价值场景的技术(如欺诈检测)来解决看似微不足道的问题,打开了我通往新世界的大门。通过从这些实验中学到的知识,我可以构建一系列全新的搜索产品和内容提供产品。
举一个你可能会遇到的例子:能够识别监控视频镜头中意料之外的动物或人物的机器学习系统。如果这个系统的性能足够高,就可以将其嵌入相机中以加强隐私;而在云端运行它时,其消耗的计算能力可以极大地减少,从而可以降低运营成本。你可以将节省的资源用于解决其他问题,进而构建更有价值的系统。
人人都希望自己创建的系统卓有成效、易于理解、性能出色,可惜通常只能从这三者中选择两个甚至一个!本书正是为那些不想放弃其中任何一个的人编写的。
相比于其他介绍相同主题的图书,本书有3个特色。首先,它是为编写代码的人而写的。你将获得所有相关的背景知识,进而明白做出特定选择背后的原因。其次,对于与背景知识相关的理论,Gorelick和Ozsvald做出了出色的诠释。最后,在本书中,你将了解到当今非常有用的性能优化库的独特之处。
能够改变你编程思维的图书为数不多,本书是其中之一。我将本书赠送给了很多可以从中受益的人。无论你使用的是哪种语言和编程环境,本书探讨的理念都将助你成为更出色的程序员。
愿你有一个愉快的探险之旅。
Accel驻企数据科学家Hilary Mason