Я все еще новичок в C#, но через сообщения на форуме заметил преимущества использования HashSet
вместо a Список
в особых случаях.
Мой текущий случай заключается не в том, что я храню огромное количество данных в одном списке
, а в том, что мне приходится часто проверять его элементы.
Загвоздка в том, что мне действительно нужно выполнить итерацию по ним, но порядок, в котором они сохраняются или извлекаются, на самом деле не имеет значения.
Я читал, что для каждого цикла на самом деле медленнее, чем для следующего, так как еще я мог бы сделать это в самом быстром из возможных методов?
Количество проверок .Contains()
, которые я выполняю, определенно ухудшает мою производительность со списками, поэтому хотя бы сравнение с производительностью HashSet
было бы кстати.
Редактировать: в настоящее время я использую списки, перебирая их во многих местах, и в каждом месте выполняется разный код. Чаще всего текущие списки содержат координаты точек, которые я затем использую для ссылки на двумерный массив, для которого я затем выполняю ту или иную операцию на основе критериев списка.
Если нет прямого ответа на мой вопрос, это нормально, но я предположил, что могут быть другие методы перебора HashSet
, а не только цикл foreach
. В настоящее время я не знаю, какие могут быть другие методы, какие преимущества они обеспечивают и т. д. Предполагая, что существуют другие методы, я также сделал предположение, что будет типичный предпочтительный метод выбора, который игнорируется только тогда, когда это не соответствует потребностям (мои потребности довольно простые).
Что касается преждевременной оптимизации, я уже знаю, что использование списков является узким местом. Как решить эту проблему, я застрял. Даже не совсем застрял, но я не хотел заново изобретать велосипед, многократно тестируя только для того, чтобы узнать, что я уже делаю это наилучшим образом (это большой проект, в который вложено более 3 месяцев, списки есть везде) , но определенно есть те, которые я не хочу дублировать, иметь много данных, не нужно хранить в каком-либо определенном порядке и т. д.).