跳至内容

Cprofile


title: CProfile

由 hitchrunpy 运行的代码片段可以使用 cprofile 进行性能分析。

"long_string" 设置为

def do_calculation(number):
    x = i^i

for i in range(0, 5000 * 1000):
    do_calculation(i)
from hitchrunpy import ExamplePythonCode
from ensure import Ensure
import hitchbuildpy
import hitchbuild

BUILD_DIR = "/path/to/build_dir/.."

virtualenv = hitchbuildpy.VirtualenvBuild(
    "/path/to/build_dir/../py3.7",
    base_python=hitchbuildpy.PyenvBuild(
        '/path/to/share_dir/../pyenv3.7',
        "3.7",
    ),
)

virtualenv.verify()

pyrunner = ExamplePythonCode(
    virtualenv.bin.python,
    '/path/to/working_dir',
)
pyrunner.with_cprofile("profiledata.dat").with_code(long_string).run()

import pstats

data = pstats.Stats("profiledata.dat").sort_stats('cumulative')
data.calc_callees()

可执行规范

文档自动从 cprofile.story 故事测试生成。