4 ms·
Wow, they got an eye-popping performance improvement from this change.
by icey 8y ago
Wow, they got an eye-popping performance improvement from this change.
- Analemma_ 8y agoI get the feeling that there has been a lot of low-hanging optimization fruit in .NET that went unaddressed because a) the original compiler was too complicated to change and b) there was no pressure to improve it because it only ran on Windows and there were no real competitors. a) was addressed by Roslyn, which is apparently much more manageable, and now that .NET is supposed to run everywhere, it has to have competitive performance. Hence the big gains.
- christophilus 8y agoI think there's also c) .NET Core is OSS, and has had a lot of contributions from the community for things that MS themselves didn't prioritize.
- Analemma_ 8y agoYes, this is an excellent point I forgot. With closed-source, you only get to make perf improvements if your manager decides there's not a more important feature you should be working on instead.
- cpeterso 8y agoFor example, .NET doesn't do escape analysis, though I've read this is less of an issue for .NET than Java because .NET has struct value types instead of everything being a heap-allocated object. https://news.ycombinator.com/item?id=16225696 https://news.ycombinator.com/item?id=16225696
- matthewwarren 8y agoJust a small thing, the Roslyn compiler (or any C# compiler) does very few optimisations, see https://blogs.msdn.microsoft.com/ericlippert/2009/06/11/what-does-the-optimize-switch-do/ https://blogs.msdn.microsoft.com/ericlippert/2009/06/11/what... for some details. Almost all of the 'compiler' optimisations are done by the JIT at run-time when it converts the IL code into machine/assembly code
- neilsimp1 8y agoIt is, but I wonder what they're measuring on Y-axis. I just says `(actual values omitted)`.
- pmalynin 8y agoIts latency
- Twirrim 8y agoIn what? Bananas per second? No value on the axis means we don't know what _exactly_ is being measured, or have an idea about the overall state. They say 37% improvement but that's largely meaningless. 37% improvement of what? If latency is 1 minute and they've shaved 22 seconds off (37%), neat. But it's still bad. If anything, the deliberate omission of scale on that Y axis is really disturbing.
- mjsabby 8y agoIt's in milliseconds. I'm going to update the post and add that note, but omitting values was a business decision, sorry.
- sandyarmstrong 8y agoIt says "The Y axis is the latency (actual values omitted)". I, too, wish they had shared the actual values, though.
- Groxx 8y agoSeems like it's also offset (e.g. Y starts above zero). >... the final precipitous drop (on June 2) is the deployment of .NET Core 2.1! That is a 34% improvement ... If so, that graph seems to be deliberately misleading.
- davidgl 8y agoThey've added the concept of immutable views into managed or unmanaged data, aka Spans. This allows huge reduction in allocations in the framework: https://msdn.microsoft.com/en-us/magazine/mt814808.aspx https://msdn.microsoft.com/en-us/magazine/mt814808.aspx