TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 309 subscribers
Post #141 217
🌿 ToList() vs ToArray() что быстрее/экономичнее по памяти?

Короче, я всю жизнь бездумно вызывал 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 более осмысленно!
#бенчмарки
Telegram C# Short Posts 🔞 Начни бенчмаркать уже сегодня! У вас есть уникальная возможность обвинить меня в пиздобольстве! Постом выше я писал, что вы можете сэкономить до 40% на сериализации. И кажется, что под таким постом нужны пруфы, Билли! Нам нужны пруфы! Так вот, получите…
  • 👍 5
  • 🔥 1
More from @dimasshortposts
  1. Oct 2, 2026s
  2. Oct 2, 2026Post #503
  3. Sep 30, 2026🛤 Путь до Tier1: от чего он зависит В прошлый раз мы гоняли hello world в цикле и увидели…
  4. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  5. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  6. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →