python:面向字节码的分析器
Posted
技术标签:
【中文标题】python:面向字节码的分析器【英文标题】:python: bytecode-oriented profiler 【发布时间】:2011-05-01 23:33:34 【问题描述】:我正在编写一个 Web 应用程序 (http://www.checkio.org/),它允许用户编写 python 代码。作为众多反馈指标之一,我想在运行此代码检查时启用分析。这是为了让用户对各种解决方案的相对效率有一个非常粗略的了解。
我需要配置文件(合理地)具有确定性。我不希望 Web 服务器上的其他负载给出糟糕的效率读数。另外,我担心一些分析器不会给出很好的测量结果,因为这些短脚本运行得非常快。 timeit 模块显示了一个正在运行数千次的函数,但如果可能的话,我不想在这个小功能上浪费服务器资源。
尚不清楚哪些标准分析器(如果有)满足此需求。理想情况下,分析器会给出“解释器字节码滴答”的单位,每个字节码指令都会增加一个。这将是一个非常粗略的度量,但满足确定性和高精度的要求。
我应该使用哪个分析系统?
【问题讨论】:
并非所有内容都作为解释器字节码运行,所以这是一个糟糕的时间度量。调用本机代码的一个“解释器字节码滴答”可能需要几微秒或几小时。 如果您希望人们能够找到他们的瓶颈,allow them to take stack samples。 @detly:我知道这是一个糟糕的措施,但在这个特殊的环境中,沙盒不允许大多数 C 扩展,它应该足以让人们说“哦,我的解决方案是比那个慢”甚至“我刚刚提高了 30 倍!”。真正的问题是,我在哪里可以找到这个糟糕的分析器? 【参考方案1】:Python 的标准分析器模块提供deterministic profiling。
【讨论】:
但这并不意味着配置文件结果将是确定性的。您对术语感到困惑。 bukzor:那怎么会是不确定的?分析器考虑 CPU 时间,而不是实时。所以加载不会影响结果。【参考方案2】:我也建议尝试一下 yappi。 (http://code.google.com/p/yappi/) 在 v0.62 中,它支持 CPU 时间分析,您可以随时停止分析器...
【讨论】:
以上是关于python:面向字节码的分析器的主要内容,如果未能解决你的问题,请参考以下文章