Size: a a a

2021 January 18

AT

Anton Ternavsky in F# Chat
Roman
типа живут на стеке, а наследник больше памяти может занимать. В итоге не получается равномерно выделить память под ячейки массива
Не, причины дизайна другие были. Да и struct физически может быть частью экземпляра класса, аллоцированного в куче, тогда и struct тоже в куче :) просто конечно когда мы явно создаем struct, то конечно она аллоцируется на стеке, но говорить что struct всегда аллоцируется на стеке-неверно
источник

VS

Vladimir Shchur in F# Chat
Roman
потому что структуры не могут в наследование
ну это же деталь имплементации) логически не очевидно когда ты думаешь что создал одну из структур, а на самом деле создал их все
источник

R

Roman in F# Chat
Vladimir Shchur
ну это же деталь имплементации) логически не очевидно когда ты думаешь что создал одну из структур, а на самом деле создал их все
Ну да, но как иначе?
источник

AT

Anton Ternavsky in F# Chat
Vladimir Shchur
ну это же деталь имплементации) логически не очевидно когда ты думаешь что создал одну из структур, а на самом деле создал их все
Да я думаю рано или поздно воткнут использование FieldOffset по одному смещению для компоновки толпы разных структур конкретно для случая-когда у нас DU является struct, просто видимо никому это пока не надо и никто не пробует в фарш такое добавить.
источник

VS

Vladimir Shchur in F# Chat
Roman
Ну да, но как иначе?
выделить динамически память на стеке по выбранному кейсу и создать структуру на ней)
источник

VS

Vladimir Shchur in F# Chat
Anton Ternavsky
Да я думаю рано или поздно воткнут использование FieldOffset по одному смещению для компоновки толпы разных структур конкретно для случая-когда у нас DU является struct, просто видимо никому это пока не надо и никто не пробует в фарш такое добавить.
вот это первое что в голову пришло) но тогда надо вычислить сразу самую жирную струкрутру
источник

R

Roman in F# Chat
Vladimir Shchur
выделить динамически память на стеке по выбранному кейсу и создать структуру на ней)
А с типом что делать-то?
источник

VS

Vladimir Shchur in F# Chat
void*
источник

VS

Vladimir Shchur in F# Chat
))
источник

AT

Anton Ternavsky in F# Chat
Vladimir Shchur
вот это первое что в голову пришло) но тогда надо вычислить сразу самую жирную струкрутру
Да, размер будет по самой толстой структуре
источник

AT

Anton Ternavsky in F# Chat
А вычислить же плевое дело, для не generic это всегда просто
источник

AT

Anton Ternavsky in F# Chat
А вот с generic уже начинаются проблемы
источник

R

Roman in F# Chat
top kek
источник

VS

Vladimir Shchur in F# Chat
Anton Ternavsky
Да, размер будет по самой толстой структуре
ну а хотелось бы всегда по актуальной в любом случае) а не по жирной
источник

I

Igor in F# Chat
Anton Ternavsky
Да я думаю рано или поздно воткнут использование FieldOffset по одному смещению для компоновки толпы разных структур конкретно для случая-когда у нас DU является struct, просто видимо никому это пока не надо и никто не пробует в фарш такое добавить.
а ты руками попробуй такую структуру напиши, где один кейс int, другой string
источник

VS

Vladimir Shchur in F# Chat
Roman
top kek
я запомнил, это из лекции @AnutaU про то как заимплементить полиморфизм)
источник

AT

Anton Ternavsky in F# Chat
Igor
а ты руками попробуй такую структуру напиши, где один кейс int, другой string
У меня на этом дофига кода написано на шарпе :) Начиная от раскладывания деревьев с десятками миллионов нод в плоскую структуру для рекурсивного обхода, заканчивая наколеночным EventSourcing с конвееризированным процессингом со скоростью в сотни М сообщений в секунду на пустом обработчике
источник

AT

Anton Ternavsky in F# Chat
Igor
а ты руками попробуй такую структуру напиши, где один кейс int, другой string
Ну string нельзя сувать
источник

AT

Anton Ternavsky in F# Chat
На самом деле, т.к. много проблем с ним при таком подходе
источник

AT

Anton Ternavsky in F# Chat
Если нужно тягать строки-то fixed массив байт, которые обработчик нужный процессит как строку, понятно, что большие строки не потягаешь, но обычно для EventSourcing где я использую такой хардкорный подход-нужны примитивные типы.
источник