- Python High Performance(Second Edition)
- Gabriele Lanaro
- 279字
- 2021-07-09 21:01:52
Benchmarking and Profiling
Recognizing the slow parts of your program is the single most important task when it comes to speeding up your code. Luckily, in most cases, the code that causes the application to slow down is a very small fraction of the program. By locating those critical sections, you can focus on the parts that need improvement without wasting time in micro-optimization.
Profiling is the technique that allows us to pinpoint the most resource-intensive spots in an application. A profiler is a program that runs an application and monitors how long each function takes to execute, thus detecting the functions in which your application spends most of its time.
Python provides several tools to help us find these bottlenecks and measure important performance metrics. In this chapter, we will learn how to use the standard cProfile module and the line_profiler third-party package. We will also learn how to profile an application's memory consumption through the memory_profiler tool. Another useful tool that we will cover is KCachegrind, which can be used to graphically display the data produced by various profilers.
Benchmarks are small scripts used to assess the total execution time of your application. We will learn how to write benchmarks and how to accurately time your programs.
The list of topics we will cover in this chapter is as follows:
- General principles of high performance programming
- Writing tests and benchmarks
- The Unix time command
- The Python timeit module
- Testing and benchmarking with pytest
- Profiling your application
- The cProfile standard tool
- Interpreting profiling results with KCachegrind
- line_profiler and memory_profiler tools
- Disassembling Python code through the dis module
- 微服務設計(第2版)
- 深入理解Bootstrap
- Modular Programming with Python
- C語言程序設計基礎與實驗指導
- Python面向對象編程:構建游戲和GUI
- Getting Started with Gulp
- Mastering JavaScript High Performance
- 大學計算機基礎實驗指導
- Raspberry Pi Home Automation with Arduino(Second Edition)
- Julia for Data Science
- Frank Kane's Taming Big Data with Apache Spark and Python
- Java并發編程之美
- OpenCV Android Programming By Example
- 軟件測試分析與實踐
- INSTANT Apache Hive Essentials How-to