Size: a a a

🎄.NET Talks: Evergreen🎄

2020 July 10

V

Vabka in 🎄.NET Talks: Evergreen🎄
Dr. Friedrich von Never
Знаешь, чем в LINQ в базовом случае отличается ToList и ToArray?
Я слышал, что в более новых версиях Linq там специальный енумерабле передаётся, который хранит в себе размер, по тому на linq на массивах в коре работает быстрее и жрёт меньше памяти
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Mr. N
1)?
2)Это NetFramework 4.7.2, и там нет
File.ReadAllTextAsync .Там 3 файла должно читать это все.
3)Чем List плохой?
4)Мне надо потом эти данные сохранить.
Ок, если там три небольших файла, и это не горячий участок кода — то всё в порядке.
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Vabka
Я слышал, что в более новых версиях Linq там специальный енумерабле передаётся, который хранит в себе размер, по тому на linq на массивах в коре работает быстрее и жрёт меньше памяти
Ну это уже не базовый случай, когда доступен размер.
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Если доступен — то да, конечно, глупо его не использовать.
источник

V

Vabka in 🎄.NET Talks: Evergreen🎄
Dr. Friedrich von Never
Ну это уже не базовый случай, когда доступен размер.
ок
источник

P

Phantom in 🎄.NET Talks: Evergreen🎄
Dr. Friedrich von Never
Ты и сам-то, поди, не новее 2012 года выпуска. Но мы же из-за этого не хотим от тебя отказаться.
XDDDD
источник

P

Phantom in 🎄.NET Talks: Evergreen🎄
А там принцип работы написанно?
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
А вот как десериализация конкретно сделана, и сможет ли она более оптимально десериализовать массив — это вопрос.
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Могли сделать так, что сможет, и тогда массив ок
источник

P

Phantom in 🎄.NET Talks: Evergreen🎄
Dr. Friedrich von Never
ToArray сперва делает ToList, потом у него берёт .Count, аллоцирует массив соответствующего размера, и копирует данные в него :)
Пиздееееееееец, что
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
А могли сделать, например, так, что она второй раз потребует данные обойти: сперва просканировать и определить длину, затем выделить массив, и только потом уже в него насовать десериализованные объекты.

В то время, как лист можно по мере надобности заполнять, и прочитанные данные сразу диспозить. А IEnumerable, например, можно на lazy IO сделать.
источник

P

Phantom in 🎄.NET Talks: Evergreen🎄
Я БЛЯТЬ ВСЕГДА ДУМАЛ ЧТО ОНО БЫСТРЕЕ
источник

Т8

Т-34 85 in 🎄.NET Talks: Evergreen🎄
Phantom
Пиздееееееееец, что
Хотел ФП - получай
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Если там гигабайт данных — то дважды их сканировать может оказаться дорого.
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Короче, правильный ответ, как всегда: зависит.
источник

P

Phantom in 🎄.NET Talks: Evergreen🎄
То есть лучше в 99% случаях юзать ToList?
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Phantom
То есть лучше в 99% случаях юзать ToList?
Я по дефолту предпочитаю лист, если нет каких-то особых требований по API.
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Ну и если я не в эфшарпе. В эфшарпе лист — хуета.
источник

Т8

Т-34 85 in 🎄.NET Talks: Evergreen🎄
Dr. Friedrich von Never
Ну и если я не в эфшарпе. В эфшарпе лист — хуета.
Он там список?😁
источник

Dv

Dr. Friedrich von Ne... in 🎄.NET Talks: Evergreen🎄
Потому что там листом называют односвязный список, да.
источник