私はバイトの文字列 (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 を使用すると、実行時間が ~.33 秒になりましたが、これにより、10 倍速くなり、 ~.03 秒になりました (どちらも 1.5 MB を超える圧縮された巨大な文字列で実行されました)。
パフォーマンスの向上はごくわずかですが、これを行うためのより良い方法はありますか?
(フィルタリングされた文字列を保存する方がはるかに最適であることは承知しています。ただし、これはオプションではありません。Minecraft クラシック サーバーのレベル形式をだましていて、特定のクライアントがサポートしていないバイトを除外する必要があります。 )