python——关于Python Profilers性能分析器
2014-12-18 15:41
465 查看
1. 介绍性能分析器
profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述。Python中含有3个模块提供这样的功能,分别是cProfile, profile和pstats。这些分析器提供的是对Python程序的确定性分析。同时也提供一系列的报表生成工具,允许用户快速地检查分析结果。Python标准库提供了3个不同的性能分析器:
cProfile,推荐给大部分的用户,是C的一个扩展应用,因为其合理的运行开销,所以适合分析运行时间较长的。是基于lsprof。
profile,一个纯python模块,它的接口和cProfile一致。在分析程序时,增加了很大的运行开销。如果你想扩展profiler的功能,可以试着继承这个模块
hotshot, 一个试验性的c模块,关注减少分析时的运行开销,但是是以需要更长的数据后处理的次数为代价。不过这个模块不再被维护,也有可能在新的python版本中被弃用。
2. 使用方法
3.分析结果图解
4. 什么是确定性性能分析(Deterministic Profiling)
确定性性能分析指的是反映所有的函数调用,返回,和异常事件的执行所用的时间,以及它们之间的时间间隔。相比之下,统计性性能分析指的是取样有效的程序指令,然后推导出所需要的时间,后者花费比较少的开销,但是给出的结果不够精确。在Python中,因为其是解释性语言,所以在执行程序的时候,会加入解释器的执行,这部分的执行是不需要进行性能分析的。Python自动为每一个事件提供一个hook,来定位需要分析的代码。除此之外,因为Python解释型语言的本质往往需要在执行程序的时候加入很多其它的开销,而确定性性能分析只会加入一点点处理开销。这样一来,确定性性能分析其实开销不大,还可以提供丰富的统计信息。
函数调用次数的统计能够被用于确定程序中的bug,比如一个不符合常理的次数,明显偏多之类的,还可以用来确定可能的内联函数。函数内部运行时间的统计可被用来确定”hot loops”,那些需要运行时间过长,需要优化的部分;累积时间的统计可被用来确定比较高层次的错误,比如算法选择上的错误。Python的性能分析可以允许直接比较算法的递归实现与迭代实现的。
相关文章推荐
- 【Python】【程序分析器】关于Python Profilers性能分析器
- 关于Python Profilers性能分析器
- 关于Python Profilers性能分析器
- 关于Python Profilers性能分析器
- Python Profilers性能分析器
- [Python--]Python Profilers 性能分析
- 【脚本语言系列】关于Python性能分析工具timeit, 你需要知道的事
- 关于VS2012自带的 性能分析 工具使用实例(图文介绍)
- 关于系统性能测试的步骤总结和分析
- python的三种url库性能与效率分析
- 关于性能分析方面些基础知识
- 关于除以2和向右移位的性能分析
- 关于侯垒的自增字段和GUID字段性能对比文章的一些自己的分析(没有测试,纯粹分析)
- 关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义
- 【转载】推荐5款超实用的.NET性能分析工具 5 Good and useful .NET Profilers
- Python性能鸡汤——新出的一篇关于Python高效编程的文章
- 关于Oracle性能分析中 自动工作量资料档案库(AWR)的管理(Oracle10个/11g的新特点)
- 一些关于debug和性能分析方面的资料收集
- 关于Duck Typing的性能分析 - Draft
- 关于hadoop集群的简单性能测试——mapreduce性能,hive性能,并行计算分析(原创)