私のプロジェクト (Delphi 6 で実行中!) には、メモリ割り当てのリスト (TMemoryAllocation) が必要です。このリストは、割り当てのサイズ (FSize) と、割り当てが使用中か解放されているか (FUsed) に関する情報も保持するオブジェクト内に保存します。 . 私はこれを基本的に GarbageCollector として使用し、メモリの割り当て/割り当て解除のアプリケーションを常に維持する方法として使用します (そして、必要な割り当て/割り当て解除がたくさんあります)。
私のプロジェクトで割り当てが必要になるたびに、リストを検索して、必要なサイズに適合する空き割り当てを見つけます。それを実現するために、単純な for ループを使用します。
for I := 0 to FAllocationList.Count - 1 do
begin
if MemoryAllocation.FUsed and (MemoryAllocation.FSize = Size) then
...
アプリケーションの実行時間が長くなるほど、このリストは数千項目に増え、非常に頻繁に (1 秒あたり数回) 実行するため、速度が大幅に低下します。
このソリューションを加速する方法を見つけようとしています。割り当てのサイズで TList をソートすることを考えました。その場合、すべての呼び出しで必要な特定のサイズのリストにアクセスするためのインテリジェントな方法を使用する必要があります。これを行う簡単な方法はありますか?
私が考えていた別の方法は、2 つの TList を持つことでした。1 つは未使用の割り当て用で、もう 1 つは使用済みの割り当て用です。つまり、あるリストから TList.Items を抽出し、常に別のリストに追加する必要があります。そして、(現在は) 小さいリストを調べるには、for ループを使用する必要があります。これは正しい方法でしょうか?
他の提案も大歓迎です!