更新时间:2021-07-02 13:55:10
coverpage
Title Page
Copyright and Credits
Hands-On High Performance Programming with Qt 5
Dedication
About Packt
Why subscribe?
Packt.com
Contributors
About the author
About the reviewer
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
Understanding Performant Programs
Why performance is important
The price of performance optimization
Traditional wisdom and basic guidelines
Avoiding repeated computation
Avoiding paying the high price
Avoiding copying data around
General performance optimization approach
Modern processor architectures
Caches
Pipelining
Speculative execution and branch prediction
Out-of-order execution
Multicore
Additional instruction sets
Impact on performance
Keeping your caches hot
Don't confuse your branch predictor
Parallelizing your application
Summary
Questions
Further reading
Profiling to Find Bottlenecks
Types of profilers
Instrumenting profilers
Sampling profilers
External counters
Note on Read Time-Stamp Counter
Platform and tools
Development environment
Profiling tools
Just use gprof?
Windows system tools
Program profiling tools
Visualizing performance data
Memory tools
Profiling CPU usage
Poor man's sampling technique
Using Qt Creator's QML profiler
Using standalone CPU profilers
Reiterating sampling profiling's limitations
Investigating memory usage
Poor man's memory profiling
Using Qt Creator's heob integration
Manual instrumentation and benchmarks
Debug outputs
Benchmarks
Benchmarks in regression testing
Manual instrumentation
Further advanced tools
Event Tracing for Windows (ETW) and xperf
Installation
Recording and visualizing traces
Conclusion
GammaRay
Building GammaRay
When can we use it?
Other tools
Graphic profilers
Commercial Intel tools
Visual Studio tools
Deep Dive into C++ and Performance
C++ philosophy and design
Problems with exceptions
Run-time overheads
Non-determinism
RTTI
Virtual functions
Traditional C++ optimizations
Low-hanging fruit
Temporaries
Return values and RVO
Conversions
Memory management
Basic truths
Replacing the global memory manager