Słownik, lista czy tablica?


Piszę usługę, w której bardzo ważna jest wydajność i nie jestem pewien, czy to najszybsza rzecz. Mam wiele obiektów (50-200), każdy z identyfikatorem (ints, jak 84397 lub 23845). Czy nie byłoby szybciej mieć Dictionary, List of KeyValue par lub listę z indeksami ustawionymi na identyfikatory z resztą równą null lub tablicą z tym samym pomysłem?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zależy to od rodzaju operacji, którą chcesz wykonać. Przypuśćmy, że chcesz

znajdź obiekt o podanym ID

.
  • Podejdź z ogromna tablica jest najszybsza: dostęp do
    myArray [84397]
    jest operacją działającą w trybie ciągłym O (1) ... Oczywiście takie podejście wymaga najwięcej pamięci.
  • Słownik działa prawie tak samo szybko, ale wymaga mniej pamięci, ponieważ używa stół http://en.wikipedia.org/wiki/Hash_table hash.
  • Podejście do lista par jest najwolniejszy, ponieważ może być konieczne przejrzenie całej listy, aby znaleźć swoje zgłoszenie, co prowadzi do trudności O(n) .

Więc w twojej sytuacji wybrałbym słownik, chyba że nieznacznie lepsza wydajność ogromnej tablicy naprawdę ma w twoim przypadku znaczenie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Słownik & < TKey, TValue & >
używa wewnętrznie tablicy skrótów, więc myślę, że będzie to najszybsza tabela.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Czas wyszukiwania w słowniku i liście
http://www.dotnetperls.com/dictionary-time
Aby uzyskać bardziej szczegółowe wyjaśnienie różnych kolekcji, sprawdź

to pytanie
https://coderoad.ru/128636/
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz również użyć tabel skrótów. Słownik i tak używa go wewnętrznie.
ale słownik ma tę zaletę, że jest typem GENERYCZNYM, który zapewnia bezpieczeństwo typów.
oto kolejny wątek

Słownik kontra HashTable
https://coderoad.ru/301371/
Mam nadzieję, że to pomoże ci rozwiązać.
Pravin

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się