Рассмотрим некоторые варианты оптимизации кода с помощью сегмента памяти, в списках и массивах:
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