【发布时间】:2016-09-25 03:22:25
【问题描述】:
类方法和静态方法之间有速度差异吗?我知道不同的用例,但有时我可以完全摆脱类方法并想知道速度差异
【问题讨论】:
标签: python optimization static-methods class-method
类方法和静态方法之间有速度差异吗?我知道不同的用例,但有时我可以完全摆脱类方法并想知道速度差异
【问题讨论】:
标签: python optimization static-methods class-method
测试一下。这将是您碰巧正在运行的任何 Python 解释器(以及所述解释器的版本)的实现细节。对于我的解释器(Python 3.5,Windows,64 位):
>>> class Foo:
... @classmethod
... def bar(cls):
... pass
... @staticmethod
... def baz():
... pass
...
>>> import timeit
>>> min(timeit.repeat('Foo.bar()', 'from __main__ import Foo', repeat=5, number=100000))
0.02093224880448102
>>> min(timeit.repeat('Foo.baz()', 'from __main__ import Foo', repeat=5, number=100000))
0.017951558014670965
>>> min(timeit.repeat('f.bar()', 'from __main__ import Foo; f = Foo()', repeat=5, number=100000))
0.020720195652103257
>>> min(timeit.repeat('f.baz()', 'from __main__ import Foo; f = Foo()', repeat=5, number=100000))
0.017714758216740734
看起来staticmethod 稍微快一些(可能只是因为它根本不需要将参数传递给函数),但我们谈论的是 100,000 次调用的 3 毫秒差异,即纳秒每次通话费用。
【讨论】:
type,它几乎无法检测到。