gpt4 book ai didi

python - Python 中的基准运行时间

转载 作者:行者123 更新时间:2023-11-28 20:47:17 25 4
gpt4 key购买 nike

我必须对 JSON 序列化时间进行基准测试,并将其与 Thrift 和 Google 的 Protocol Buffer 的序列化时间进行比较。它还必须使用 Python。

我正计划使用 Python 分析器。 http://docs.python.org/2/library/profile.html

探查器会是查找函数运行时的最佳方式吗?或者在函数调用前后输出时间戳是更好的选择吗?

或者有更好的方法吗?

最佳答案

从您链接到的个人资料文档:

Note The profiler modules are designed to provide an execution profile for a given program, not for benchmarking purposes (for that, there is timeit for reasonably accurate results). This particularly applies to benchmarking Python code against C code: the profilers introduce overhead for Python code, but not for C-level functions, and so the C code would seem faster than any Python one.

所以,不,您不想使用 profile 来对您的代码进行基准测试。您想要使用 profile 的目的是找出为什么您的代码太慢,在您已经知道它是太慢之后。

并且您也不想在函数调用前后输出时间戳。如果您不小心(使用错误的时间戳函数,让 GC 在测试运行中间运行循环收集,包括循环计时中的测试开销等),那么您可能会犯太多错误.),timeit 会为您处理所有这一切。

像这样的东西是基准测试的常用方法:

for impl in 'mycode', 'googlecode', 'thriftcode':
t = timeit.timeit('serialize(data)',
setup='''from {} import serialize;
with open('data.txt') as f: data=f.read()
'''.format(impl),
number=10000)
print('{}: {}'.format(impl, t)

(我在这里假设您可以编写三个模块,将三个不同的序列化工具包装在同一个 API 中,单个 serialize 函数接受一个字符串并用它做某事或其他事情。显然有不同的方式来组织事物。)

关于python - Python 中的基准运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com