7 ms·
C# wouldn't be a problem for Unity if they hadn't mapped most engine abstractions to class hierarchies with reflection-based dispatch instead of value-type hand
by debugnik 7mo ago
C# wouldn't be a problem for Unity if they hadn't mapped most engine abstractions to class hierarchies with reflection-based dispatch instead of value-type handles and the seldom interface, and had dropped the Boehm GC. .NET has actually got a lot of features to avoid allocations on the hot paths.
- pjmlp 7mo agoThe problem is called Mono, and Unity's refusal to pay for an update.
- thezipcreator 7mo agoinstead they made (or funded? not exactly sure) il2cpp which is a batshit compiler that compiles IL to C++ for better performance, I guess. sidenote, I wonder how many other low-level to high-level compilers exist out there. can't be many.
- debugnik 7mo agoAFAIK, the original reason to build IL2CPP was to appease console certification and leave behind Mono's quirky AOT on iOS. Capcom is also using their own C# implementation targeting C++ for console certification. Allegedly some games are now managing to ship on console with ports of .NET NativeAOT.
- debugnik 7mo agoI agree Mono is bad compared to upstream .NET, but I used to write game prototypes with it back before .NET Core without as many performance issues as I still find in Unity. It was doable with a different mindset.