內容簡介
在當今飛速發展和充滿競爭的世界中,對於客戶而言,程序的性能與功能一樣重要。這本實踐指南為開發人員講解在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 電子書 格式