以适合火焰图格式输出的统计剖面仪

flamegraph的Python项目详细描述


一个简单的统计分析器,其输出格式适合于FlameGraph

安装:

只需运行:

pip install git+https://github.com/evanhempel/python-flamegraph.git

用法:

在探查器下运行脚本:

python -m flamegraph -o perf.log myscript.py --your-script args here

对输出运行brendan gregg的FlameGraph工具:

flamegraph.pl --title "MyScript CPU" perf.log > perf.svg

享受输出:

Attic create flame graph

筛选

有时您可能希望排除方法 (例如,在服务器中,等待新请求的方法) 或者您可能只想分析代码的一个子集 (对性能至关重要的特定方法及其子方法)。

过滤可以通过将python正则表达式传递给 -f--filter命令行选项 这将限制只输出匹配的行。 对整行进行筛选,以便可以通过 函数名、线程名、两者,甚至由 更复杂的过滤器,如函数abc调用def(ABC.*DEF)。

或者,由于输出是stackframes,每一行都有一个单独的输出, 这只需使用一个简单的grep过滤器即可完成。

Exclude:

  grep -v waiting_method perf.log > removed_waiting.log

Include:

  grep function_name perf.log > filtered.log

然后对过滤后的文件运行flamegraph.pl脚本。

yCanta webapp full profile of PDF export

yCantawebapp pdf导出的完整配置文件输出。大多数时间是 在等待状态和图表中使用不是很有帮助。

yCanta webapp filtered for PDF export format function.

已筛选的yCantawebapp pdf导出的配置文件输出。过滤在 pdf格式函数,因此已排除等待状态下花费的时间,并且 图表现在有用了。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Maven无法识别安装在Ubuntu外壳上的$java_HOME jdk   java如何防止可运行程序在其中一个抛出异常时执行   java Listview在按下项时不触发   如何在WindowsPhone8中使用JavaRESTWebService?   java在spring引导下使用多个dispatcher servlet/web上下文   java为什么在删除容器的绝对大小时不绘制GEF子项?   java在hibernate实体中保留DB约束是好的   JavaSpring选择最高优先级bean   ArrayList<Class>java字符串[]   有向加权边图的Java邻接表实现   字母数字字符串的java Tesseract配置:混合2、Z、6和G   如果输入为空,则带有EditText的java警报对话框将关闭   jsp上的java Struts 2动作响应   java获取IndexOutOfBundException Android   scala AWSJAVASDK:解压缩大小必须小于262144000字节