2013-09-01 10 views
0

Могу ли я улучшить производительность этого кода, где я пытаюсь выполнить поиск в списке словаря (tr) из списка строк (_authorizedBks). Есть ли лучший способ кодировать это на C# или поддерживающих языках в .NET?Как я могу улучшить производительность этого кода?

for (int i = tr.Count - 1; i >= 0; i--) 
{ 
    if (tr[i].ContainsKey("BK") && !_authorizedBks.Contains(tr[i]["BK"], StringComparer.CurrentCultureIgnoreCase)) 
    { 
      removedBks.Add(tr[i]); 
    } 
} 

// where tr is List<Dictionary<string, string>> 
// _authorizedBks is List<string> 
// removedBks is List<Dictionary<string, string>> 

ответ

2

Если вы хотите искать в тех, что вы можете дать HashSet<T> попробовать? Поиск в hashset амортизируется в O (1).

HashSet<Dictionary<string, string>> tr = new HashSet<Dictionary<string, string>>(); 
HashSet<string> _authorizedBks = new HashSet<string>(); 
+2

Убедитесь, что вы строите authorizedBks с правильным IComparer, хотя. –

+0

этот код является частью веб-сервиса, и для этого веб-сервиса могут быть клиенты C++ или Java, а также сериализуется и расходуется Hashtable на C++ или Java-клиентах? – user2736702

+0

@ user2736702 Да, это так. –

Смежные вопросы