Найти в Дзене

Инициализация List в C#

А вот мы решили создать List из уже существующего массива. Какой же способ выбрать, если нам важны наносекунды? Ответ: любой. Но если наносекунды нам действительно важны, то мы будем выбирать передачу массива в конструктор List'a. Внутри есть попытка каста IEnumerable к ICollection, что позволяет создать внутренний массив нужного размера. Именно его расширение является замедляющим фактором и причиной аллокации при вызове банального метода Add. Инициализатор, конечно же, является синтаксическим сахаром многократного вызова метода Add (это отчётливо видно в IL). Мой канал в TG: https://t.me/csharp_gepard

А вот мы решили создать List из уже существующего массива. Какой же способ выбрать, если нам важны наносекунды?

Ответ: любой.

Но если наносекунды нам действительно важны, то мы будем выбирать передачу массива в конструктор List'a. Внутри есть попытка каста IEnumerable к ICollection, что позволяет создать внутренний массив нужного размера. Именно его расширение является замедляющим фактором и причиной аллокации при вызове банального метода Add.

Инициализатор, конечно же, является синтаксическим сахаром многократного вызова метода Add (это отчётливо видно в IL).

Мой канал в TG: https://t.me/csharp_gepard