import sys
if sys.version_info[0] >= 3:
from urllib.parse import urlparse
else:
from urlparse import urlparse
class DataSource(object):
def _isurl(self, path):
scheme, netloc, upath, uparams, uquery, ufrag = urlparse(path)
return bool(scheme and netloc)
@staticmethod
def _isurl_staticmeth(path):
scheme, netloc, upath, uparams, uquery, ufrag = urlparse(path)
return bool(scheme and netloc)
时间安排:
In [1]: ds = DataSource()
In [2]: %timeit ds._isurl_staticmeth('http://www.google.com')
The slowest run took 14.76 times longer than the fastest. This could mean that an intermediate result is being cached
100000 loops, best of 3: 2.25 µs per loop
In [3]: %timeit ds._isurl('http://www.google.com')
The slowest run took 12.99 times longer than the fastest. This could mean that an intermediate result is being cached
100000 loops, best of 3: 2.31 µs per loop
我很有信心,这不是出于性能原因:
时间安排:
实际上,这两种方法产生几乎相同的字节码:
不管是哪种方式,
_isurl
都不太可能在性能危急的情况下使用。你知道吗我不能代表numpy开发人员说话,但是我想不出为什么不把
_isurl
作为staticmethod而不是instancemethod的具体原因。如果我是从头开始设计一个类似的类,那么我可能会让它成为一个staticmethod或者只是一个普通的老模块函数。你知道吗相关问题 更多 >
编程相关推荐