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

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
主站蜘蛛池模板: 南充市| 双城市| 平安县| 新昌县| 漳州市| 平顶山市| 南乐县| 铜川市| 慈利县| 澄迈县| 浦东新区| 佛坪县| 靖江市| 红原县| 陇川县| 米泉市| 昌平区| 五大连池市| 咸阳市| 鞍山市| 仁布县| 巫山县| 喜德县| 铁岭市| 金秀| 芦山县| 丰台区| 建阳市| 淮阳县| 巢湖市| 金塔县| 闻喜县| 十堰市| 玛沁县| 道孚县| 中宁县| 清新县| 信阳市| 益阳市| 桑植县| 天台县|