Короче, я всю жизнь бездумно вызывал ToList(). ХЗ почему. Наверное потому что когда-то один раз так сделал и дальше пошло по накатанной.
Но тут великолепный Арсений Кравченко :nice обратил луч внимания на то, что кажется надо бы об этом подумать. И я подумал, что действительно, а есть ли разница?
Воспользовался темплейтом для бенчамарков:
using System.Collections.Generic;
using System.Linq;
using BenchmarkDotNet.Attributes;
namespace ToListToArrayBenchmark;
[MemoryDiagnoser]
public class Benchmarks
{
[Benchmark]
public void Scenario1()
{
var array = GenerateInts().ToArray();
}
[Benchmark]
public void Scenario2()
{
var list = GenerateInts().ToList();
}
private static IEnumerable<int> GenerateInts()
{
for (var i = 0; i < 100; i++)
{
yield return i;
}
}
}
Получил результат:
По скорости:
Mean Scenario1: 801.7 ns
Mean Scenario2: 750.1 ns
По памяти:
Allocated Scenario1: 1.16 KB
Allocated Scenario2: 1.19 KB
🅰️
UPD: Великолепный Арсений в комментариях отметил, что всё не так эквипенисуально! Есть особенности связанные с тем, как растёт лист. Короче, я переобуваюсь и начинаю юзать ToArray и ToList более осмысленно!
#бенчмарки