有没有理由更喜欢使用 unicode(somestring, 'utf8')
而不是 somestring.decode('utf8')
?
我的唯一想法是,.decode()
是一个绑定方法,因此Python可能能够更有效地解析它,但如果我错了请纠正我。
我更倾向于使用'something'.decode(...)
,因为Python 3.0中已经没有unicode
类型了,而text = b'binarydata'.decode(encoding)
仍然有效。
这很容易进行基准测试:
>>> from timeit import Timer
>>> ts = Timer("s.decode('utf-8')", "s = 'ééé'")
>>> ts.timeit()
8.9185450077056885
>>> tu = Timer("unicode(s, 'utf-8')", "s = 'ééé'")
>>> tu.timeit()
2.7656929492950439
>>>
显然,unicode()
更快。
顺带一提,我不知道你为什么觉得方法会更快——恰恰相反。
unicode()
比s.decode()
快约4倍。 - jfsencode
的东西?需要用它来快速哈希Unicode字符串。 - delijatihashlib.md5(u"höömaa".encode("utf-8")).hexdigest()
如果不进行编码会崩溃。我使用mmh3.hash128
生成快速哈希,但encode
会使其变慢。 - delijatis*100000
,两者都是相同的。我不知道为什么。 - jfs