官术网_书友最值得收藏!

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
主站蜘蛛池模板: 龙海市| 嘉禾县| 彰化市| 邵武市| 航空| 通渭县| 定西市| 东阳市| 宜兰市| 嘉祥县| 新邵县| 石河子市| 五莲县| 阜宁县| 揭阳市| 舒兰市| 荆州市| 沂源县| 谷城县| 德江县| 古丈县| 莒南县| 利川市| 孝昌县| 闽清县| 荥阳市| 寿光市| 东源县| 黄梅县| 竹溪县| 江西省| 资溪县| 手机| 枣强县| 静海县| 东丽区| 墨竹工卡县| 商都县| 定西市| 始兴县| 和顺县|