python - 如何加速 Python 中的字符串连接?

标签 python

在下面的代码中,连接是瓶颈。 如您所见,我已经尝试了一些复杂的方法来加快速度,但无论如何它都很慢。我想知道我是否可以做些什么来让它更快。

顺便说一下,plain 和 secret 都是从二进制文件中读取的数据,它们都很大(大约 1mb)

x = b''
if len(plain) < len(secret*8):
    return False
i = 0

for secByte in secret:
    for j in range(8):
        z = setBit(plain[i],0,getBit(secByte,j))
        #x += bytes([z])
        x = x.join([b"", bytes([z])])
        #x = array.array("B",(int(z) for z in x.join([b"", bytes([z])]))).tostring()
        i = i+1

最佳答案

Python 的列表追加复杂度为 O(1),至少在摊销意义上是这样。您可以构建一个大列表,然后在最后加入它们,而不是在最里面的列表中进行连接。这会将您的算法从 O(N^2) 变为 O(N)。在不知道您的 setBit() 和 getBit() 函数正在做什么的情况下很难为您提供工作代码,但是类似的东西:

L = []
for secByte in secret:
    for j in range(8):
         z = ...
         L.append(z)
x = b"".join(L)

关于python - 如何加速 Python 中的字符串连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4289777/

相关文章:

python - 部署 Flask,并行请求

python - 创建元组的无意尾随逗号

python - 如何使用 re.match 查找数字?

python - 尝试使用字典和 map 转换包含特定文本的行时遇到问题

python - 在python中通过sys.argv输入隐藏字符串

python - 随机替换字符串的某些部分

python:与 pandas 一起工作。获取计数

python - 安装tensorflow-gpu破坏了tensorflow

c# - 过滤一组包含其他短语的所有短语的算法

python - 在 tkinter 滚动条中显示文件