我正在处理一串字节(可以在 10kb 到 3MB 之间的任何位置),我需要过滤掉大约 16 个字节(用其他字节替换它们)
目前我有一个有点像这样的功能..
BYTE_REPLACE = {
52: 7, # first number is the byte I want to replace
53: 12, # while the second number is the byte I want to replace it WITH
}
def filter(st):
for b in BYTE_REPLACE:
st = st.replace(chr(b),chr(BYTE_REPLACE[b]))
return st
(为了这个问题,解释了字节列表)
使用 map 导致执行时间约为 0.33 秒,而这导致时间快了 10 倍,约为 0.03 秒(两者都在 HUGE 字符串上执行,压缩后大于 1.5MB)。
虽然任何性能提升都可以忽略不计,但有没有更好的方法来做到这一点?
(我知道存储过滤后的字符串会更加优化。不过,这不是一个选项。我在玩 Minecraft Classic 服务器的关卡格式,并且必须过滤掉某些客户端不支持的字节)