字节码指令成本

时间:2016-06-10 04:44:37

标签: python

是否有可能在某些指标(秒,CPU滴答,对数刻度,任何东西)中知道每条指令的“成本”?或者至少对于一些指令,跳过像SLICE这样的东西。 https://docs.python.org/3/library/dis.html有一个描述。有源代码:https://hg.python.org/cpython/file/tip/Python/ceval.c#l1199。我想通过分析源代码可以估计每条指令会占用多少资源,但我怀疑这可以像我这样的noob来完成。可能有人已经这样做了吗?当然有很多关于优化的高级建议,关于过度优化,但是这样的测量可能会帮助初学者更好地理解字节码而不需要深入研究C源?

编辑:实际的问题不是关于分析或调试代码 - 我知道各种分析方法 - 问题特别是关于字节码。我记住CPU指令,它有一个成本测量 - 每个指令的周期。

2 个答案:

答案 0 :(得分:1)

衡量“小”代码片段性能的典型方法是timeit。对于较大的内容,我们通常使用cProfile代替。

这些技术将通过实际运行来测量代码并查看执行所需的时间,因此它们不会产生完全确定的答案。如果您正在寻找更具理论性的东西,您可能需要查看反汇编和CPython source code,并了解它的速度有多快。如果您查阅Python/C API docs,您可能会发现源代码更容易阅读,因为很多CPython源代码最终会调用相同的函数。

答案 1 :(得分:0)

如@kevin所述,您可以使用cProfile。您可以看到http://lanyrd.com/2013/pycon/scdywg/

对于逐行分析,您可以使用https://github.com/rkern/line_profiler 我从here找到了。