Страницы: 1
RSS
Получить значение по ключу. Массив, Словарь и Коллекция, Get Item by Key. Array vs Dictionary vs Collection
 
Приветствую!
Очередная тема с тестами, чтобы поделиться и самому не потерять
Файл и Код
Сравнил скорости на "обычных" объёмах данных. При увеличении количества элементов и циклов, словарь быстро и предсказуемо сходит на нет, а коллекции вообще нельзя использовать (тоже предсказуемо — они годятся вместо словарей если ключей более 100 тыс)

Зачем:
Реальное применение у меня:
Изменено: Jack Famous - 16.02.2022 16:52:18
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
А нет ли ошибки при проведении эксперимента?
Если я правильно понимаю, то эту часть Вы используется, чтобы понять, сколько времени потребуется на поиск nCyc элементов в массиве длиной nEl.
Код
    For nC = 1 To nCyc
        For nE = 1 To nEl
            x = arr(nE)
        Next nE
    Next nC

И сравниваете со временем, которое потребуется на поиск nCyc элементов в словаре на nEl элементов. И для этого используете
Код
    For nC = 1 To nCyc
        For nE = 1 To nEl
            x = dic(nE)
        Next nE
    Next nC

Мне кажется, это неправильно. Эта конструкция ищет в словаре "nEl * nCyc" раз. А нам, если не ошибаюсь, нужно что-то вроде
Код
    For nC = 1 To nCyc
         x = dic(nC)
    Next nC

PS Такие эксперименты одобряю. Соррян, если я где-то что-то недопонял.
 
МатросНаЗебре, приветствую и спасибо за внимание к теме!
Код
    For nC = 1 To nCyc ' в цикле nCyc раз …
        For nE = 1 To nEl ' ищем каждое из nEl элементов в массиве/словаре/коллекции
        Next nE
    Next nC
или, проще говоря, мы пишем значение (объект содержит) в массив/словарь/коллекцию nEl раз, а считываем nEl * nCyc раз (10 тыс элементов* 1 тыс раз = 10 млн вызовов для примера)

В данном случае никакого перебора массива для поиска значения НЕТ (было бы заметно дольше словаря) и значение берётся по индексу (в качестве ключа) массива напрямую
Изменено: Jack Famous - 16.02.2022 17:45:56
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх