3 ms·
> but only if you avoid classes and use only arrays Please do look into the kind of codegen emitted by OpenJDK and .NET before assuming this. It's a bit diffic
by neonsunset 2y ago
> but only if you avoid classes and use only arrays
Please do look into the kind of codegen emitted by OpenJDK and .NET before assuming this. It's a bit difficult with -XX:+PrintAssembly and much easier with DOTNET_JitDisasm='pattern'/Disasmo/NativeAOT+Ghidra. Once you do, you will clearly see how the exact set of ISA extensions influences instruction selection for all sorts of operations like stack zeroing, loads/stores, loop vectorization (automatic or manual), etc. .NET has extensive intrinsics and portable SIMD APIs that use effectively static dispatch even if the path is still picked at runtime, but just once during JIT compilation.
> still suffers from its Windows-centric history.
This is a provably wrong, especially in peformance-related scenarios.
- o11c 2y agoIn non-performance contexts, C# still suffers from the fact that I can't just reach out and install it from any random distro. The only other major languages with a comparable problem are Kotlin and Swift, which suffer from a similar association with Android and Mac OS, respectively.
- neonsunset 2y agoYou can, except Debian but that’s Debian for you. sudo apt/dnf install dotnet-sdk-8.0 For Debian use this: https://learn.microsoft.com/en-us/dotnet/core/install/linux-debian https://learn.microsoft.com/en-us/dotnet/core/install/linux-... It is a better user experience than dealing with C/C++ or Java tooling too. For shipping packages you don’t even need this since you can just publish them as self-contained or as native binaries.