Поскольку Сборщик "мусора" не может собрать то, что не выделила управляемая среда. Поэтому любой вызов к неуправляемому API, который приводит к выделению памяти, должен быть собран старомодным способом.
Я бы рекомендовал использовать реальный Guid
, а не строковое представление Guid
. Да, при сравнении строк длина действительно влияет на количество требуемых операций, поскольку необходимо сравнивать строки посимвольно (как минимум; это запрещает любые специальные параметры, такие как IgnoreCase
). Фактический Guid
предоставит вам для сравнения только 16 байтов, а не минимум 32 в строке
.
При этом вы, скорее всего, не заметите никакой разницы ... преждевременная оптимизация и все такое.
Да и нет. Большие строки увеличивают объем памяти словаря. А большие размеры означают немного большее время для вычисления размеров хэшей.
Но беспокоиться об этих вещах, вероятно, является преждевременной оптимизацией. Хотя он будет медленнее, вы, вероятно, не заметите этого.
Очевидно, да. Вот хороший тест: Тест ключа словарной строки
Я быстро поискал в Google и нашел эту статью.
http://dotnetperls.com/dictionary-string-key
Это подтверждает, что обычно более короткие ключи работают лучше, чем более длинные.
см. Производительность - использование объекта Guid или строки Guid в качестве ключа для ответа на аналогичный вопрос. Вы можете проверить это с помощью альтернативного ключа.
Фактический размер объекта по отношению к получению значений не имеет значения. Скорость поиска значений намного больше зависит от скорости двух методов в переданном в IEqualityComparer
экземпляре
EDIT
Многие люди используют String как оправдание того, что больший размер объекта снижает производительность поиска. К этому следует относиться с недоверием по нескольким причинам.
IEqualityComparer
таким образом, чтобы длина строки не имела значения.