Introduction
Tavish Armstrong
Its commonplace to say that computer hardware is now so fast that mostdevelopers dont have to worry about performance. In fact, DouglasCrockford declined to write a chapter for this book for that reason:
If I were to write a chapter, it would be about anti-performance: mosteffort spent in pursuit of performance is wasted. I dont think thatis what you are looking for.
Donald Knuth made the same point thirty years ago:
We should forget about small efficiencies, say about 97% of the time:premature optimization is the root of all evil.
but between mobile devices with limited power and memory, and dataanalysis projects that need to process terabytes, a growing number ofdevelopers do need to make their code faster, their data structuressmaller, and their response times shorter. However, while hundreds oftextbooks explain the basics of operating systems, networks, computergraphics, and databases, few (if any) explain how to find and fix thingsin real applications that are simply too damn slow.
This collection of case studies is our attempt to fill that gap. Eachchapter is written by real developers who have had to make an existingsystem faster or who had to design something to be fast in the firstplace. They cover many different kinds of software and performancegoals; what they have in common is a detailed understanding of whatactually happens when, and how the different parts of large applicationsfit together. Our hope is that this book willlike its predecessor TheArchitecture of Open Source Applicationshelp you become a betterdeveloper by letting you look over these experts shoulders.
Tavish Armstrong
Contributors
Tavish Armstrong (editorial): Tavish studies software engineering at Concordia University and hopes to graduate in the spring of 2014. His online home is http://tavisharmstrong.com.
Michael Snoyman (Warp): Michael is the lead software engineer at FP Complete. He is the founder and lead developer of the Yesod Web Framework, which provides a means of creating robust, high-performance web applications. His formal studies include actuarial science, and he has previously worked in the US auto and homeowner insurance industry analyzing large data sets.
Kazu Yamamoto (Warp): Kazu is a senior researcher of IIJ Innovation Institute. He has been working for open source software around 20 years. His products include Mew, KAME , Firemacs and mighty.
Andreas Voellmy (Warp): Andreas is a PhD candidate in Computer Science at Yale University. Andreas uses Haskell in his research on software-defined networks and has published open source Haskell packages, such as nettle-openflow, for controlling routers using Haskell programs. Andreas also contributes to the GHC project and is a maintainer of GHC s IO manager.
Ilya Grigorik (Chrome): Ilya is a web performance engineer and developer advocate on the Make The Web Fast team at Google, where he spends his days and nights on making the web fast and driving adoption of performance best practices. You can find Ilya online on his blog at igvita.com and under @igrigorik
on Twitter.
Evan Martin (Ninja): Evan has been a programmer at Google for nine years. His background before that includes degrees in computer science and linguistics. He has hacked on many minor free software projects and a few major ones, including LiveJournal. His website is http://neugierig.org .
Bryce Howard (Mobile Performance): Bryce is a software architect who obsesses about making things go fast. He has 15+ years in the industry, and has worked for a number of startups youve never heard of. He is currently taking a stab at this whole writing thing and authoring an introductory Amazon Web Services book for OReilly Associates.
Kyle Huey (Memshrink): Kyle works at the Mozilla Corporation on the Gecko rendering engine that powers the Firefox web browser. He earned a Bachelors degree in mathematics from the University of Florida before moving to San Francisco. He blogs at blog.kylehuey.com .
Clint Talbert (Talos): Clint has been involved in the Mozilla project for almost a decade, first as a volunteer and then as an employee. He currently leads the Automation and Tools team with a mandate to automate everything that can be automated, and a personal vendetta to eliminate idle cycles on any automation machine. You can follow his adventures in open source and writing at clinttalbert.com .
Joel Maher (Talos): Joel has over 15 years of experience automating software. In the last 5 years at Mozilla, Joel has hacked the automation and tools at Mozilla to extend to mobile phones as well as taken ownership of Talos to expand tests, reliability and improve regression detection. While his automation is running, Joel likes to get outdoors and tackle new challenges in life. For more automation adventures, follow along at elvis314.wordpress.com .
Audrey Tang (Ethercalc): A self-educated programmer and translator based in Taiwan, Audrey currently works at Socialtext with the job title Untitled Page, as well as at Apple on localization and release engineering. Audrey has previously designed and led the Pugs project, the first working Perl 6 implementation, and served in language design committees for Haskell, Perl 5, and Perl 6, with numerous contributions to CPAN and Hackage. Follow Audrey on Twitter at @audreyt
.
C. Titus Brown (Khmer): Titus has worked in evolutionary modeling, physical meteorology, developmental biology, genomics, and bioinformatics. He is now an Assistant Professor at Michigan State University, where he has expanded his interests into several new areas, including reproducibility and maintainability of scientific software. He is also a member of the Python Software Foundation, and blogs at http://ivory.idyll.org .
Eric McDonald (Khmer): Eric McDonald is a developer of scientific software with an emphasis on high performance computing ( HPC ), the area in which he has worked much of the past 13 years. Having previously worked with several varieties of physicists, he now helps bioinformaticians. He holds a bachelors degree in Computer Science, Mathematics, and Physics. Eric has been a fan of FOSS since the mid-nineties.
Douglas C. Schmidt (DaNCE): Dr. Douglas C. Schmidt is a Professor of Computer Science, Associate Chair of the Computer Science and Engineering program, and a Senior Researcher at the Institute at Software Integrated Systems, all at Vanderbilt University. Doug has published 10 books and more than 500 technical papers covering a wide range of software-related topics, and led the development of ACE , TAO , CIAO , and CoSMIC for the past two decades.
Aniruddha Gokhale (DaNCE): Dr. Aniruddha S. Gokhale is an Associate Professor in the Department of Electrical Engineering and Computer Science, and Senior Research Scientist at the Institute for Software Integrated Systems ( ISIS ) both at Vanderbilt University. He has over 140 technical articles to his credit, and his current research focuses on developing novel solutions to emerging challenges in cloud computing and cyber physical systems.
William R. Otte (DaNCE): Dr. William R. Otte is a Research Scientist at the Institute for Software Integrated Systems ( ISIS ) at Vanderbilt University. He has nearly a decade of experience developing open source middleware and modeling tools for distributed, real-time and embedded systems, working with both government and industrial partners including DARPA , NASA , Northrup Grumman and Lockheed-Martin. He has published numerous technical articles and reports describing these advances and has participated in the development of open standards for component middleware.