6 ms·
> but I've been told by other people that Microsoft or at least the .NET just generally prefer a simpler approach, without profiling, dynamic compilation, deopt
by matthewwarren 9y ago
> but I've been told by other people that Microsoft or at least the .NET just generally prefer a simpler approach, without profiling, dynamic compilation, deoptimisation, and other complexity the approach used by the JVM brings. It's much more what-you-see-is-what-you-get from their JIT, rather than the mind-binding things the JVM manages to do with some code, and maybe that makes life easier for their use cases.
Interesting, it's clear after a bit of research that this is the case (i.e. .NET JIT simpler that Hotspot), but it had never occurred to me that it was a conscious decision
I'd always thought that the .NET was just playing catch-up and/or didn't need to do all the things that Hotspot does. (for instance .NET has value types or 'stucts' so some optimisations are not needed because the programmer can just use them instead of classes, if they need the perf boost)
- sillypuddy 9y agoIt has been a deliberate decision. The Book of the Runtime documentation states "The goal of the CLR is to make programming easy" and acknowledges there are faster alternatives out there. When I have asked insiders why there isn't a bigger focus on performance, the response is essentially that if performance is really important you should use C++.
- matthewwarren 9y ago> The Book of the Runtime documentation states "The goal of the CLR is to make programming easy" In case anyone else is interested, that quote comes from https://github.com/dotnet/coreclr/blob/master/Documentation/botr/intro-to-clr.md#the-primary-goal-of-the-clr https://github.com/dotnet/coreclr/blob/master/Documentation/...
- benaadams 9y agoAlso says > The .NET runtime supports a wide variety of high performance applications. As such, performance is a key design element for every change. https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/performance-guidelines.md https://github.com/dotnet/coreclr/blob/master/Documentation/...
- pjmlp 9y agoThat point of view is outdated. Hence Roslyn, .NET Native with VC++ backend, value types improvements and safer pointers in 7.x. There are even plans to slowly move parts of the runtime from C++ into C#, now that .NET Native is a thing. " So, in my view, the primary trend is moving our existing C++ codebase to C#. It makes us so much more efficient and enables a broader set of .NET developers to reason about the base platform more easily and also contribute" https://www.infoq.com/articles/virtual-panel-dotnet-future https://www.infoq.com/articles/virtual-panel-dotnet-future https://www.infoq.com/articles/high-performance-dotnet https://www.infoq.com/articles/high-performance-dotnet
- readittwice 9y agoJava seems to have a similar initiative called "Project Metropolis" to (re)write some stuff in Java instead of C++: http://mail.openjdk.java.net/pipermail/discuss/2017-September/004336.html http://mail.openjdk.java.net/pipermail/discuss/2017-Septembe...