🖥 Оптимизируем работу с коллекциями для улучшения производительности



Рассмотрим некоторые варианты оптимизации кода с помощью сегмента памяти, в списках и массивах:



1. Использование сегмента памяти для работы с массивамиSpan<T> позволяет эффективно работать с сегментами массивов или строк без выделения дополнительной памяти:

int[] arr = { 1, 2, 3, 4, 5 };

Span<int> span = arr.AsSpan().Slice(1, 3); // [2, 3, 4]

Console.WriteLine(span.ToArray()); // вывод: 2 3 4




2. Использование списка для уменьшения перераспределений — Если заранее известно, сколько элементов будет в списке, можно установить емкость списка, чтобы избежать лишних перераспределений памяти:

List<int> list = new List<int>(1000); // заранее выделяем память

list.Add(1);

Console.WriteLine(list.Capacity); // вывод: 1000




3. Использование словаря для поиска по ключу — Вместо использования линейного поиска в списке, использование Dictionary обеспечивает быстрый доступ к данным по ключу за время O(1):

Dictionary<string, int> dict = new Dictionary<string, int>

{

{ "apple", 1 },

{ "banana", 2 },

{ "cherry", 3 }

};

Console.WriteLine(dict["banana"]); // вывод: 2




➡️ C# Ready | #техсобес