2011-05-01 45 views
4

我正在编写一个允许用户编写python代码的web应用程序(http://www.checkio.org/)。作为众多反馈指标之一,我希望在对此代码执行检查时启用分析功能。这是为了让用户对各种解决方案的相对效率有一个非常粗略的概念。python:面向字节码的剖析器

我需要的配置文件是(合理)确定性。我不希望网络服务器上的其他负载给读取效率不佳。另外,我担心有些配置文件不会给出很好的测量结果,因为这些简短的脚本运行得非常快。 timeit模块显示了一个函数中运行数以千计的时间,但我想如果可能的话不会在这个小功能浪费服务器reasources。

目前还不清楚哪些(如果有的话)标准轮廓仪可以满足这种需求。理想情况下,分析器会给出“解释器字节码滴答”的单位,每个字节码指令会增加一个。这将是一个非常粗糙措施,但符合确定性和高精度的要求。

我应该使用哪种分析系统?

+0

并非所有内容都作为解释器字节码运行,所以这是一个很差的时间。一个调用本地代码的“解释器字节码打勾”可能需要几微秒或几小时。 – detly 2011-05-02 01:12:33

+0

如果你想让人们能够找到他们的瓶颈,[允许他们采取堆栈样本](http://stackoverflow.com/questions/4295799/how-to-improve-performance-of-this-code/4299378# 4299378)。 – 2011-05-02 02:12:37

+0

@detly:我知道这是一个贫穷的措施,但在这个特殊的环境中,大多数C扩展沙箱不允许的,它应该是足够好,让别人说:“哦,我的解决方案比一个慢”,甚至“我刚刚改进了30倍!”。真正的问题是,我在哪里可以找到这个可怜的分析器? – bukzor 2011-05-02 03:27:22

回答

1

Python的标准剖析器模块提供deterministic profiling

+0

但是,这并不意味着轮廓的结果将是确定性的。你对术语感到困惑。 – bukzor 2011-05-02 03:25:08

+1

bukzor:那怎么会是不确定性? profiler会考虑CPU时间,而不是实时。所以加载不会影响结果。 – vartec 2011-05-02 16:30:08

0

我也建议尝试yappi。 (http://code.google.com/p/yappi/)在v0.62中,它支持CPU时间分析,并且您可以在任何时候停止分析器...