私はindexes
と呼ばれる大きなリストを持っています。リストの各項目は、2つの整数を含むタプルです。整数は、1つの大きな文字列に連結したい一連の部分文字列の開始と終了のインデックスを示します。Python - 一連の文字列を結合する最速の方法
たとえば、indexes
のリストには、次のような2つのエントリしかないとします。[(1, 5), (10,15)]
インデックス位置1〜5の文字とインデックス位置10〜15の文字で構成される出力文字列が必要です。 ..これらの2つのスライスを連結したIE。
もう少し具体的には、私のメインストリングは、実際には、多数の16進値の文字列バージョンです。私は最終的に私の最終的な文字列をバイナリバージョンに変換してからファイルに書き出します。現在、私のプロセスは、大規模なデータセットに本当に遅いですし、次のようになります。
def combineFrames(indexes, largeString):
'''
input1 = list of all indexes for start/end of substring
input2 = the larger String from which the substrings are being pulled
returns a single string that consists of all substrings concatenated together...
function also generates a new file that consists of the binary version of the concatenated substrings
'''
final_string = ""
for seq in indexes:
final_string += hexString[seq[0]:seq[1]]
fullFile = binascii.unhexlify(final_string)
with open("d:\\output_File", 'wb') as f:
f.write(fullFile)
return fullFile
現在、上記のは本当に遅いですし、私はそれを高速化する方法があると思います。思考?
「本当に遅い」の速度はどれくらいですか?どのようなサイズの入力のために?どのくらい速く速くなるのでしょうか?あなたはこれをプロファイリングしましたか? – pvg
私はコーディングで全部の騒ぎです - これは数ヶ月間しかありませんでしたので、他のオプションやこれをどのようにプロファイルするのか分かりません...質問は、索引はおそらくそれを処理する最良の方法ではなく、検索中に他の方法を見つけることができませんでした。質問をした方が良い方法はありますか(あとで参照するために) – occvtech
これらの質問のうちのいくつかを自分で解決しようとしています。入力のサイズ/タイプは何ですか?目標は何ですか?プロファイリングはコードの部分を特定するのに役立ちますが、時間がかかります(より長い話題)。最初は経過時間を測定するだけで良いスタートです。もう1つの良い方法は、全体的に最適化の方法が全く異なる場合があるため、解決している一般的な問題を簡単に説明することです。一般的に、パフォーマンスに関連する作業については、質問の有無にかかわらず、より具体的な測定値と目標、より良い。 – pvg