1.3 МБ - это всё еще мало. Если так печётесь за размер, то trimming + aot вам в помощь. Сборка мусора не вызывает такие уж сильные фризы, да и никто вам не запрещает сразу писать non-heap код, использовать arraypool, синглтоны и так далее. На крайний случай существует Background GC, который при сборке не блокирует приложение. P/Invoke можно использовать и без указателей - давно существует маршаллинг
Я не математик и у меня 3 по алгебре и 4 по геометрии с колледжа, но хочу сказать по поводу оптимизации. В .NET Math и MathF класс внутри под каждым методом имеют Intrinsic атрибут, который говорит что вызов метода надо подменить опкодом на этапе JIT компиляции. Грубо говоря, целый метод превратиться в одну инструкцию. В вашем случае, исходя из того, что написано в статье, нет ни одного атрибута. Конечно, к соответственной оптимизации вам не получится прийти, ибо всё это делается в исходниках CLR. Я вам предлагаю добавить MethodImpl атрибут с параметром AggressiveInlining, чтобы исключить ненужные прыжки по стеклу
Почему выбор пал на .NET 11, а не на .NET 10? Он же еще не вышел
1.3 МБ - это всё еще мало. Если так печётесь за размер, то trimming + aot вам в помощь. Сборка мусора не вызывает такие уж сильные фризы, да и никто вам не запрещает сразу писать non-heap код, использовать arraypool, синглтоны и так далее. На крайний случай существует Background GC, который при сборке не блокирует приложение. P/Invoke можно использовать и без указателей - давно существует маршаллинг
Я не математик и у меня 3 по алгебре и 4 по геометрии с колледжа, но хочу сказать по поводу оптимизации. В .NET Math и MathF класс внутри под каждым методом имеют Intrinsic атрибут, который говорит что вызов метода надо подменить опкодом на этапе JIT компиляции. Грубо говоря, целый метод превратиться в одну инструкцию. В вашем случае, исходя из того, что написано в статье, нет ни одного атрибута. Конечно, к соответственной оптимизации вам не получится прийти, ибо всё это делается в исходниках CLR. Я вам предлагаю добавить MethodImpl атрибут с параметром AggressiveInlining, чтобы исключить ненужные прыжки по стеклу