我必须对JSON序列化时间进行基准测试,并将其与节俭和Google的协议缓冲区的序列化时间进行比较。
而且它必须在python中。
我正计划使用python分析器。http://docs.python.org/2/library/profile.html
探查器将是查找函数运行时的最佳方法吗?
还是在函数调用之前和之后输出时间戳是更好的选择?
还是有更好的方法?
提前致谢!
从profile
您链接到的文档:
注意探查器模块旨在为给定程序提供执行配置文件,而不是出于基准测试的目的(为此目的是
timeit
为了获得合理准确的结果)。这尤其适用于使用C代码对Python代码进行基准测试:分析器会为Python代码带来开销,但不会为C级函数带来开销,因此C代码似乎比任何Python代码都要快。
因此,不,您不想使用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
一个使用字符串并对其执行某些操作的函数。显然,组织事情的方式不同。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句