(Each chapter concludes with Key Points.)
Preface.
Introduction.
Roots of Software Inefficiency.
Our Goal.
Software Efficiency: Does It Matter?
Terminology.
Organization of This Book.
1. The Tracing War Story.
Our Initial Trace Implementation.What Went Wrong.The Recovery
Plan.
2. Constructors and Destructors.
Inheritance.Composition.Lazy Construction.Redundant
Construction.Key Points.
3. Virtual Functions.
Virtual Function Mechanics.Templates and Inheritance.Hard
Coding.Inheritance.Templates.
4. The Return Value Optimization.
The Mechanics of Return-by-Value.The Return Value
Optimization.Computational Constructors.
5. Temporaries.
Object Definition.Type Mismatch.Pass by Value.Return by
Value.Eliminate Temporaries with op=().
6. Single-Threaded Memory Pooling.
Version 0: The Global new() and delete().Version 1: Specialized
Rational Memory Manager.Version 2: Fixed-Size Object Memory
Pool.Version 3: Single-Threaded Variable-Size Memory Manager.
7. Multithreaded Memory Pooling.
Version 4: Implementation.Version 5: Faster Locking.
8. Inlining Basics.
What Is Inlining?Method Invocation Costs.Why Inline?Inlining
Details.Inlining Virtual Methods.Performance Gains from
Inlining.
9. Inlining—Performance Considerations.
Cross-Call Optimization.Why Not Inline?Development and Compile-Time
InliningConsiderations. Profile-BasedInlining.Inlining
Rules.Singletons.Trivials.
10. Inlining Tricks.
Conditional Inlining.Selective Inlining.Recursive Inlining.Inlining
with Static Local Variables.Architectural Caveat: Multiple Register
Sets.
11. Standard Template Library.
Asymptotic Complexity.Insertion.Deletion.Traversal.Find.Function
Objects.Better than STL?
12. Reference Counting
Implementation Details.Preexisting Classes.Concurrent Reference
Counting.
13. Coding Optimizations.
Caching.Precompute.Reduce Flexibility.80-20 Rule: Speed Up the
Common Path.Lazy Evaluation.Useless Computations.System
Architecture.Memory Management.Library and System Calls.Compiler
Optimization.
14. Design Optimizations.
Design Flexibility.Caching.Web Server Timestamps.Data Expansion.The
Common Code Trap.Efficient Data Structures.Lazy
Evaluation.getpeername().Useless Computations.Obsolete Code.
15. Scalability.
The SMP Architecture.Amdahl’s Law.Multithreaded and Synchronization
Terminology.Break Up a Task into Multiple Subtasks.Cache Shared
Data.Share Nothing.Partial Sharing.Lock Granularity.False
Sharing.Thundering Herd.Reader/Writer Locks.
16. System Architecture Dependencies
Memory Hierarchies.Registers: Kings of Memory.Disk and Memory
Structures.Cache Effects.Cache Thrash.Avoid Branching.Prefer Simple
Calculations to Small Branches.Threading Effects.Context
Switching.Kernel Crossing.Threading Choices.
Bibliography.
Index. 0201379503T04062001
Dov Bulka has spent fifteen years in the trenches of software development delivering large-scale software products to market. He was the performance architect of the IBM Domino-Go Web server that has powered some of the biggest Web sites ever hosted on the Internet, including that of the 1996 Atlanta Olympics. He received his Ph.D. in computer science from Duke University.
David Mayhew is Principal Architect of StarBridge Technologies, Inc., where he concentrates on interconnection fabrics, peer processing, and PCI bus evolution. Previously, he worked for IBM's Networking Software Division. He received his Ph.D. in computer science from Virginia Tech.
Ask a Question About this Product More... |