Ilya
Вроде в основном и разбирали, что не совсем.
Shub
или Map - это Dictionary?
Угу. Просто когда ты указываешь IDictionary, то сразу подозрение, что там на самом деле гораздо более богатый тип и непонятно, что от него ожидать
Shub
Ну в остальном все очень прилично, хотел бы я такой код в наших репах
Vabka
Теперь ещё вопросец https://gist.github.com/vabka/89f7b35045de9539391ce6d5385e21ca 1. Есть ли какая-нибудь альтернатива Linq2Db? Есть какая-нибудь удобная обёртка над EF может? Видел Dapper.Fsharp - у него есть обёртка типизированная, но она вроде только для простых запросов пригодна. 2. Что на счёт module Queryable?
Shub
Ну вот разве что про алиасы. Часто люди не знают, что алиасы не энфорсятся. Впрочем я тоже так делаю, если у меня планы этот тип заменить впоследствии
Vabka
ток если заменять их потом на что-то иное есть смысл
Vabka
Я лично не пользуюсь, но тут часто dapper упоминается. Но linq2db неплохо смотрится
ток на счёт linq2db не уверен, как инсерты на нём будут смотреться, и будут ли они вообще работать, тк они поверх Expression сделаны
Anonymous
Зачем именно массив? Непрерывная память?
Anonymous
Я правда не знаю какие есть альтернативы
Shub
Они лучше чем списки
Ayrat
массив же тут самый норм.
Ayrat
лучше бы конечно какой-то ридонли массив, но дотнет до него не додумался
Anonymous
а почему нет?
Потому что в общем случае непрерывная память штука дорогая и подвержена ресайзам. Конкретно в том случае мне не понятно, знаешь ли ты наперёд сколько всего будет элементов или нет, если нет - то преаллок не сработает.
Anonymous
Короче, я бы просто задумался
Anonymous
Ок это тут или нет
Ayrat
то есть просто непрерывная память с перф характеристиками массива но без записи по индексу
Ayrat
ну типа создал раз, дальше только трансформ
Vabka
ну и вроде sql возвращает же количество записей в ответе, так что можно преаллоцировать
Ayrat
что в ToArray, что в ToList
Vabka
А если пагинауия?
несколько массивов
Ayrat
одинаковый алгоритм
Ayrat
Нет, линкед лист - плохая идея
Vabka
Лично мне эта идея кажется неплохой.
ну и хало. Какой пагинируя? Какой смысл?
Ilya
Нет вроде. Там же интернал ArrayBuilder
https://github.com/linq2db/linq2db/blob/43ca3371c2f7b0c99305d8e427885a52c5ee4a9d/Source/LinqToDB/AsyncExtensions.cs#L230-L232
Ayrat
А чего?
так эта, я не понял в чём проблема-то массива
Ayrat
минусы линкед листа очевидны - разрозненная память
Ayrat
а зачем
Romɑn
Лично мне эта идея кажется неплохой.
там не линкед лист нужен, тебе нужен seq!
Anonymous
Ну ссылка же выше
Ayrat
Так блэт
Ilya
а зачем
Наверное, тем же вопросом, что и @willtakeyoutothecandyshop задались, но пользователи очень сильно просили.
Ayrat
Ресайз
это вообще не является проблемой когда ты знаешь размер и даже когда не знаешь не особо проблема, т.к. ресайз в геометрической прогрессии растёт
Romɑn
там не линкед лист нужен, тебе нужен seq!
Если я верно разобрался о чем вы. а то скачаете с марксизма на велосипеды(не программерские) с них на общ транспорт, потом на ф#, по ом на самокаты
Romɑn
Seq ничего не гарнирует
так никто ничего не гарантирует!
Anonymous
Нахуя непрерывная память?
Anonymous
Ее и поооцииоатаь сложнее
Anonymous
чтобы ПОТОМ быстро читать
В кеш что ли чтоб попало?
Ayrat
В кеш что ли чтоб попало?
да даже нет, просто итерация
Ayrat
хотя итерация будет быстрее из-за кешей в т.ч.
Ilya
Кстати, а как работает ToArray у списка? Пойду поищу.
Ayrat
они не могут внутренний массив отдавать очевидно
Ayrat
ты про список сишарпа или про список фшарпа?
Ayrat
список фшарпа знает свою длину
Ayrat
поэтому на нём вызов toArray тривиальный - преалоцировал массив, заполнил
Romɑn
список фшарпа знает свою длину
ну не так уж и знает, ты про "может посчитать?"
Romɑn
да прям знает
задолбали читать исходники и обыгрывать меня
Anonymous
да даже нет, просто итерация
С этой точки зрения да, но аллокауия непрерывной памяти ощутимо так дробит адресное пространство и там тыща проблем потом, то есть минусы тоже есть и сейчас непонятно как их замерить, недетерминированный процесс слишком.
Anonymous
Но мысль я понял, «чтобы потом быстрее читать»