идейки какие?
а ты адо.нет можешь ускорить? :D
если точно скажите где
А можно layout типа получить в рантайме? Где дырки, где поля, где managed-поля, где unmanaged-поля Ну или что-то такое: ReadOnlySpan<byte> GetLayoutMask(Type targetType, LayoutFlags flags) - позвал c LayoutFlags.Unmanaged и получил масочку, где unmanaged-поля - там 1, где managed-поля или дырки - там 0
внутреннее апи есть такое, публичного - нет
Так может опубликовать? Чем не фича рантайма для net9
создай ишью апи пропозал 🤷♂️
Вот возьму и создам! Но ты же знаешь чем это закончится - придет таннер и скажет, что нинужна!11 Ну или свой альтернативный пропозал предложит, в котором будет переименование IsReferenceOrContainsReferences
Так сделай просто так же - https://github.com/SergeyTeplyakov/ObjectLayoutInspector
Это работает не всегда и через жуткие костыли При этом внутри есть точно похожая апиха - ибо TypeLoader layout типа проверяет
А для чего ты используешь эти знания прямо в рантайме? В целом вроде не подводил, давно пользуюсь. Правда у нас почти везде struct/record struct и т.п.
самому что б можно было структуры через memcmp сравнивать
так они и так сравниваются через мемкмп если можно
Есть нюанс, если у тебя там padding есть и кто-то балуется SkipLocals к примеру, можно и встрять
это внутри рантайма только, где IsBitwiseEquatable<T> есть и это только голые байты а можно было бы масочку наложить, и гонять по результату применения маски - если уверен про свою конкретную структуру
так лучше просто ускорить дефолтный Struct.Equals
Обсуждают сегодня