内容简介
在当今飞速发展和充满竞争的世界中,对于客户而言,程序的性能与功能一样重要。这本实践指南为开发人员讲解在C++中实现优化的性能调优原则。你将学习如何令已经包含了C++设计实践的代码在任何计算机上——无论是手表、电话、工作站、超级计算机还是全球服务器网络——很快地运行并消耗少的资源。
作者提供了几个运行示例,演示如何逐步应用这些原则以改进现有代码,从而满足客户对响应速度和数据吞吐量的要求。
作者简介
Kurt Guntheroth,是一位有超过35年经验的软件开发人员,其中25年的时间被他用来编写大量C++代码。他在Windows、Linux和嵌入式设备上开发。kurt住在华盛顿州西雅图市。
目录
Preface
1. An Overview of Optimization
Optimization Is Part of Software Development
Optimization Is Effective
It's OK to Optimize
A Nanosecond Here, a Nanosecond There
Summary of Strategies for Optimizing C++ Code
Use a Better Compiler, Use Your Compiler Better
Use Better Algorithms
Use Better Libraries
Reduce Memory Allocation and Copying
Remove Computation
Use Better Data Structures
Increase Concurrency
Optimize Memory Management
Summary
2. Computer Behavior Affecting Optimization
Lies C++ Believes About Computers
The Truth About Computers
Memory Is Slow
Memory Is Not Accessed in Bytes
Some Memory Accesses Are Slower than Others
Memory Words Have a Big End and a Little End
Memory Has Finite Capacity
Instruction Execution Is Slow
Making Decisions Is Hard for Computers
There Are Multiple Streams of Program Execution
Calling into the Operating System Is Expensive
C++ Tells Lies Too
All Statements Are Not Equally Expensive
Statements Are Not Executed in Order
Summary
3. Measure Performance
The Optimizing Mindset
Performance Must Be Measured
Optimizers Are Big Game Hunters
The 90/10 Rule
Amdahl's Law
Perform Experiments
Keep a Lab Notebook
Measure Baseline Performance and Set Goals
You Can Improve Only What You Measure
Profile Program Execution
Time Long-Running Code
'~ Little Learning" About Measuring Time
Measuring Time with Computers
Overcoming Measurement Obstacles
Create a Stopwatch Class
Time Hot Functions in a Test Harness
Estimate Code Cost to Find Hot Code
Estimate the Cost of Individual C++ Statements
Estimate the Cost of Loops
Other Ways to Find Hot Spots
Summary
4. Optimize String Use: A Case Study
Why Strings Are a Problem
Strings Are Dynamically Allocated
Strings Are Values
Strings Do a Lot of Copying
First Attempt at Optimizing Strings
Use Mutating String Operations to Eliminate Temporaries
Reduce Reallocation by Reserving Storage
Eliminate Copying of String Arguments
Eliminate Pointer Dereference Using Iterators
Eliminate Copying of Returned String Values
Use Character Arrays Instead of Strings
……
5. Optimize Algorithms
6. Optimize Dynamically Allocated Variables
7. Optimize Hot Statements
8. Use Better Libraries
9. Optimize Searching and Sorting
10. Optimize Data Structures
11. Optimize I/0
12. Optimize Concurrency
13. Optimize Memory Management
精彩书摘
《C++性能优化手册(影印版 英文版)》:
A sundial makes use of the periodic off—plane rotation of the Earth.By definition,one full rotation is one day The Earth makes an imperfect clock because its period is long,and because its rotation speeds up and slows down detectably (in microseconds) as the continents drift slowly across its surface.This variation is random.Tidal forces from the Moon and Sun slow the overall rate of the Earth's rotation.This variation is systematic.
A grandfather clock counts the regular swinging of a pendulum.Gears divide the pendulum's swing down to drive hands that display the time.The period of the pendulum may be manually adjusted so that the displayed time is synchronized to the Earth's rotation.The period of a pendulum's swing depends on the weight of the pendulum and its length,so that every swing may be faster or slower than desired.This variation is systematic.Friction,air pressure,and the accumulation of dust may all affect a pendulum even ifit is initially set perfectly.These are random sources of variation.
……
C++性能优化手册(影印版 英文版) [Optimized C++] 电子书 下载 mobi epub pdf txt