dotnet / aspnetcore

ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.
https://asp.net
MIT License
35.56k stars 10.05k forks source link

[Blazor WebAssembly] Create performance benchmarks for Blazor against other UI frameworks #23571

Closed xrkolovos closed 10 months ago

xrkolovos commented 4 years ago

It would be nice to have performance benchmarks of blazor against

Some scenarios that it would be nice to be inclueded:

What it needs to be measured:

xrkolovos commented 4 years ago

Some work is being done here -> https://medium.com/dailyjs/a-realworld-comparison-of-front-end-frameworks-2020-4e50655fe4c1

xrkolovos commented 4 years ago

Related #21085 #22432

danroth27 commented 4 years ago

Hi @xrkolovos. Our focus with Blazor is to improve productivity by enabling a full stack .NET development experience. Blazor WebAssembly is currently based on a .NET IL interpreter, so we know it isn't going to win any speed competitions when compared with front end JavaScript frameworks like Angular/React/Vue. We are working to improve Blazor WebAssembly performance for .NET 5, and we plan to provide AoT compilation support in .NET 6 at which point it may make sense for us to revisit doing this kind of comparison benchmarking. If the community is interested in producing these benchmarks sooner, that's also completely reasonable.

xrkolovos commented 4 years ago

Hi @danroth27. You answer is perfectly understood.

I believe that every one that uses blazor sees and understands things that are missing in this technology (like dev experience, hot reload etc). Developers choose if they want to start developing with Blazor by measuring, first what this technology is offering (and it's a lot) together with what is missing. What is missing is answered by your next features timeline. It's clear that there are still things to be done. Every technology needs some years to mature and be feature complete.

It's important though, to help people that takes risks and choose the technologies their colleagues will develop with. In this direction, i think, is important to have more informations in the performance scope. We need to know how much behind blazor is, and what are the expectations. Based on your comment, I hope you will choose wisely when the right time is to start this measurements.

In the end is important to know if Web Assembly UI frameworks can be in the future equal or faster to javascript frameworks? Or they will always be left behind?

srxqds commented 4 years ago

@xrkolovos thank you, we use webassembly for making tool show view log, but we found that it may became ui freeze when more than 600 lines. It is so sad, we want your help to solve it. the code and problem show with it: https://github.com/dotnet/aspnetcore/issues/23701

riesvriend commented 4 years ago

It would be nice to look at the high level approach to create performant rendering of large dynamic data sets. Mobx (state tree) on react is nailing it and would also apply to Blazor. It’s not only performance, but also ease of coding when the number of components and their data rendering dependencies get huge. With a MST style model, it stays simple. The components are ‘pure’ (no state and no NeedsRender logic), and renders are triggered only when really applicable. See the video here https://mobx-state-tree.js.org/concepts/using-react

simonpbond commented 4 years ago

@danroth27 Would Microsoft ever run Microsoft.com (the public facing & landing pages) on Blazor? This should be the internal benchmark. At this point in time I guess the answer would be no, since there is a 'loading framework time' the end user needs to experience. Awesome for back-end sites, but I would love to see it eventually reach the level of being a contender for serious public facing sites & landing pages also.

michaelvolz commented 3 years ago

I found this benchmark comparison for many frontend frameworks very helpful https://krausest.github.io/js-framework-benchmark/current.html

MuleaneEve commented 2 years ago

.NET and ASP.NET have been proudly presenting their performance gains for the past few years, and I think it is one of the big reasons why it has become cooler to use them in the tech community.

I really hope that Blazor can receive the same attention to performance. For example, the krausest benchmark is not kind to Blazor.

@danroth27 Now that .NET 6 has shipped, can you please put this on the roadmap?

ghost commented 11 months ago

We've moved this issue to the Backlog milestone. This means that it is not going to be worked on for the coming release. We will reassess the backlog following the current release and consider this item at that time. To learn more about our issue management process and to have better expectation regarding different types of issues you can read our Triage Process.

mkArtakMSFT commented 11 months ago

@danroth27 we will be building our own perf infra for missing scenarios, but I don't plan to tackle the "comparison" type of platform ask here. I am willing to even close this. @danroth27 leaving this up to you in case you have a strong argument for this being too important in comparison to some other work we plan to do.

danroth27 commented 10 months ago

Agreed that we don't have any plans to publish our own performance comparison benchmarks. Folks in the community are of course free to do so.