実際に小さなリストでは、次の手順(説明が続きます)はうまくいきますが、リストに含まれる項目数が多い場合(1/2 million)、アプリケーションは「応答しません」状態になり、仕上げには約2.5分かかります(非常に悪い時)。 アプリケーションを追加して、少なくとも1億個のアイテムリストを処理する必要があります(少なくとも最終的には )。ここでこれはおそらくスタックオーバーフローの問題です
は問題プロシージャのコードである:
public void removeItems(List<long> L, SortedList<long, List<long>> _subLists)
{
foreach (KeyValuePair<long, List<long>> kvp in _subLists)
{
foreach (long duplicate in kvp.Value)
{
int j = L.IndexOf(duplicate);
L.RemoveRange(j,(int)kvp.Key);
}
}
}
Lは、長い値のリストです。 _subListsは並べ替えられたリストです。各値は、Lからの の値のリストであり、相違点(関連しない)の算術進行シリーズを開始します。 その値に関連付けられたキーは、値に含まれる系列の長さです。
例:
L = {1,2,3,5,6,7,18,20,21} _subLists = {2、< 20>} {3、< 1,5> }
手順だけで、かなり遅く、1つがあなたが遅い実行時間を期待することができ、大きなO記法で、この手順の実行時間は、2をn ^うL.
どのような言語ですか?そして何が問題なの? –
c#。より速い実装のための アイデア? –