Vasily
Правильно думаешь
Nikolay
Как бы так хитро сделать, чтобы один раз считать?
Vasily
Ну ты задумку расскажи
Vasily
Чую,ща Айрат с Ivar ворвется
Ayrat
если ты take 1 сделаешь, то оно возможно превратится в TOP 1 на SQL И Может быть уже двигло субд соптимизирует запрос
Ayrat
"1001 и костыль с ORM"
Vasily
Прямо надо почитать
Vasily
Про seq.cache
Ayrat
Seq.cache
да ну, это же закеширует всю таблицу в память. First хотя бы (наверное) на стороне БД отсеет. просто много раз
Ayrat
Прямо надо почитать
да там нечего читать, при перечислении складывается в ResizeArray и переисползьуется при повтором перечислении
Dr. Friedrich
Я вот, например, считаю, что у него нету там никаких таблиц.
Ayrat
А чо ты решил, что у него вообще вопрос про ORM?
скорее всего про ORM но я вспомнил что @Dolfik последнее время какую-то рефлексию с графКэУль мучает
Ayrat
может и не орм, да
Dr. Friedrich
Если у тебя seq — это запрос в БД, то от Seq.cache будет немного толку, да.
Nikolay
Nikolay
Такая дичь
Ayrat
пахнуло ентерпрайзными оперднями
Dr. Friedrich
Если это запрос в БД, то не запаривайся
Nikolay
Из Dictionary же
Nikolay
ContainsKey/GetItem
Dr. Friedrich
Ну вон, у тебя IIF там кокойто
Dr. Friedrich
Я решил, что это SQL.
Nikolay
Это сгенереный Expression :D
Vasily
Выглядит как пиздец
Nikolay
Expression'ы безумно сложно дебажить
Vasily
Всегда можно написать экспрешн, который будет врапить экспрешн и выводить отладочную информацию
Nikolay
Сложно дебажить динамическую генерацию выражений
Vasily
Не совсем понятно, почему ты такой путь избрал
Vasily
Плюс есть библиотеки типа LinqOptimizer
Vasily
Которые дерево экспрешнов слегка оптимизируют
Nikolay
Не совсем понятно, почему ты такой путь избрал
Потому, что нужно делать маппинг в рантайме без рефлексии
Vasily
Обычный Dictionary<string,object>
Vasily
Им можно представить любой объект
Vasily
Далее можно на базе DynamicObject поразвлекаться
Nikolay
Id, Customer_Addresses_Id нужно мапить в: class Customer { public int Id { get; set; } public List<Address> Addresses { get; set; } }
Vasily
Завернуть в класс в смысле?
Nikolay
Вот такого плана штуки
Nikolay
В такую модель
Igor
Е
Фигасе у тебя монитор широкий
Igor
Hog
Фигасе у тебя монитор широкий
Или окошко на 3 растянуто :)
Nikolay
А это норм, если на стеке создавать лист, в который запихивать овердохрена объектов?
Nikolay
Объектов struct
Hog
Каким образом?
Nikolay
Или быстрее будет сделать классы, и оставить кучу работы сборщику мусора?
Nikolay
var list = new List<MyStruct>(); for (var i = 0; i < 100_000; i++) { list.Add(new MyStruct()); }
Nikolay
Типа так упрощённо
Nikolay
А потом над этим листом совершить некоторые манипуляции)
Hog
Это же всё в куче создаётся
Nikolay
Список структур на куче создастся?
Nikolay
Блин, точно, понял почему
Nikolay
Хм, а так: var array = new MyStruct[count]; for (var i = 0; i < count; i++) { array[i] = new MyStruct(); } ?
Nikolay
Или всё то же самое, т.к. это тоже в отдельную функцию будет передано
Hog
Да то же самое кмк
Nikolay
Чёрт, очень не хочется сборщик лишней работой нагружать
Nikolay
Ибо создаётся временно куча объектов
Hog
Вроде тут Ayrat давеча с выделением стека игрался так
Hog
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/stackalloc
Ayrat
Чёрт, очень не хочется сборщик лишней работой нагружать
если тебе надо вернуть этот массив, то в любом случае добро пожаловать на кучу. Или же прокидывать В функцию спан/массив на стеке и в функции его заполнять.
Ayrat
Короче, забей. Игрища со стаком они не для таких задач вообще
Nikolay
А Span нужен как раз для массивов на стеке?
Hog
Философский вопрос!
Ayrat
А Span нужен как раз для массивов на стеке?
Раньше массивы на стеке только в ансейфе делались. Спан позволяет делать то же самое в сейф контексте.
x
Спасите. Я тут начал читать про computational expressions эфшарпа, и у меня пока не укладывается в голове. Это всё оч похоже на монадический bind как по мне. Но я полагал что в эфшарпе для этого существуют какие-то спецоператоры. Или да? Или нет? Нужно самому реализовывать механику этих expressions либо же поддержка встроена в язык?
Ayrat
Они так же хороши для построения DSL
Ayrat
вот например комп экспрешн для написания типизированного html в коде (и никаких монад) http://www.fssnip.net/hf/title/DSL-for-constructing-HTML
x
Ок. Ща зачту. А вдвух словах: это более джедайская вещь чем монады и аппликативы? Может мне вообще пока рано туда соваться? Насколько это общепризнанный концепт, ведь в хаскеле такого нету?
Ayrat
Ок. Ща зачту. А вдвух словах: это более джедайская вещь чем монады и аппликативы? Может мне вообще пока рано туда соваться? Насколько это общепризнанный концепт, ведь в хаскеле такого нету?
Это более общая вещь которая позволяет реализовать do нотацию в том числе. Соваться туда стоит, почему нет Общепризнанный кем - неясен вопрос.
x
Т.е. это если вот я в с# взял для своей самодельной монады validation, да реализовал методы select, selectMany и подьюзвл это дело через линкю query comprehension—то это что-то навроде компьютейшнл экспрешнз для бедных?