Dictionary.ContainsKey () лучше, чем FirstOrDefault ()? - PullRequest
0 голосов
/ 24 ноября 2018

Я знаю, ни один миллион из всего не будет исполнителем.Но мне сейчас нужна эта часть знаний.

У меня есть словарь и строка [].Логическое значение в словаре просто для заполнения пространства.Давайте представим, что в качестве системы инвентаризации просто все упростить.

В этом инвентаре я хочу проверить, получил ли я уже один предмет.Так что я бы сделал:

if (dic.ContainsKey(item_id)) // That could be a TryGetValue() as well.
{
    // Do some logic.
}

Но лучше ли было бы просто иметь массив?

if (array.FirstOrDefault(a => a = item_id))
{
    // Do magic.
}

Я имею в виду, что будет лучше в этом конкретном случае?

Я знаю, это глупый вопрос, но когда у вас может быть более миллиона (или более девяти тысяч, для поклонников DBZ там xD) проверок, вещи могут стать довольно тяжелыми, особенно для мобильных устройств, VR и других.с аналогичной производительностью.

Кроме того, я просто хочу, чтобы мои пользователи имели лучший опыт работы с моим Инвентаризацией (иначе говоря, без задержки), поэтому я часто принимаю подобные вещи во внимание.

1 Ответ

0 голосов
/ 24 ноября 2018

Здесь есть два компромисса: пространство и время.

Словарь - это относительно тяжелая структура по сравнению с массивом.

Время поиска в словаре (или HashSet), если в основномне зависит от количества записей O (1), в то время как с массивом он увеличивается линейно O (N).

Таким образом, существует определенное количество элементов, в которых Словарь (или HashSet) начинает работать значительно быстрее.И 1 миллион, безусловно, выше этого порога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...