【问题标题】:What's the fastest way to decode a bytes object in Python? [closed]在 Python 中解码字节对象的最快方法是什么? [关闭]
【发布时间】:2020-12-11 11:05:22
【问题描述】:

我正在解码大量的小 utf-8 字符串。

最快的解码方法是什么?

【问题讨论】:

  • 最快的编码?跑得最快?另请提供一些示例输入和预期输出

标签: python utf-8


【解决方案1】:

如果最快是指运行速度最快,那么普通的decode() 字节方法应该可以解决问题。

py -m timeit "b'test'.decode('utf8')"
1000000 loops, best of 5: 215 nsec per loop

py -m timeit "str(b'test', 'utf8')"
1000000 loops, best of 5: 339 nsec per loop

如果您对差异感兴趣,我猜这是因为str() 经历了两次实例创建机制。 str() 开始实例化一个新字符串,因此会产生开销,到达 __new__ 然后转到 PyUnicode_FromEncodedObject

bytes.decode() 但是直接去同一个PyUnicode_FromEncodedObject,没有事先做任何操作。

【讨论】:

  • @snakecharmerb str() 开始创建实例(并产生开销),到达__new__ 然后转到PyUnicode_FromEncodedObject,而bytes.decode() 直接转到PyUnicode_FromEncodedObject。我已经更新了我的答案以反映这一点。
  • 非常感谢!如何获取相关的 Python 源代码?
  • @SeanChambers1 Python 的源代码托管在 GitHub 上。字节的相关代码是here
猜你喜欢
  • 1970-01-01
  • 2021-04-12
  • 2020-12-07
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多