Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
xrkolovos opened this issue Jul 1, 2020 · 12 comments
Assignees
Labels
affected-few This issue impacts only small number of customers area-blazor Includes: Blazor, Razor Components area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework feature-blazor-wasm This issue is related to and / or impacts Blazor WebAssembly Pillar: Technical Debt severity-nice-to-have This label is used by an internal tool task
Milestone

Comments

@xrkolovos
Copy link

It would be nice to have performance benchmarks of blazor against

  • Angular
  • VueJs
  • React

Some scenarios that it would be nice to be inclueded:

  • Hello world test
  • Same to Do app
  • Http calls scenario
  • Two-way data binding in a large form
  • An app with a serious amount of components
  • A component with a large table
  • Some Routing scenario
  • other ideas...?

What it needs to be measured:

  • bootup time
  • total kilobytes
  • json serialization time
  • memory needed
  • time passed when renders complete
  • DOM manipulation aspects
  • http calls aspects
  • other ideas...?
@xrkolovos
Copy link
Author

@xrkolovos
Copy link
Author

Related #21085 #22432

@Pilchie Pilchie added the area-blazor Includes: Blazor, Razor Components label Jul 1, 2020
@mkArtakMSFT mkArtakMSFT added this to the Discussions milestone Jul 2, 2020
@danroth27
Copy link
Member

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.

@danroth27 danroth27 modified the milestones: Discussions, Backlog Jul 2, 2020
@danroth27 danroth27 added the task label Jul 2, 2020
@xrkolovos
Copy link
Author

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
Copy link

srxqds commented Jul 8, 2020

@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: #23701

@riesvriend
Copy link

riesvriend commented Jul 9, 2020

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
Copy link

@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.

@SteveSandersonMS SteveSandersonMS added affected-few This issue impacts only small number of customers severity-nice-to-have This label is used by an internal tool labels Oct 6, 2020 — with ASP.NET Core Issue Ranking
@michaelvolz
Copy link

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

@javiercn javiercn added feature-blazor-wasm This issue is related to and / or impacts Blazor WebAssembly feature-infrastructure-improvements labels Apr 20, 2021
@MuleaneEve
Copy link

.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?

@amcasey amcasey added area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework and removed feature-infrastructure-improvements labels Jun 1, 2023
@mkArtakMSFT mkArtakMSFT modified the milestones: Backlog, BlazorPlanning Nov 5, 2023
@mkArtakMSFT mkArtakMSFT modified the milestones: Planning: WebUI, Backlog Dec 12, 2023
@ghost
Copy link

ghost commented Dec 12, 2023

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
Copy link
Member

@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
Copy link
Member

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.

@danroth27 danroth27 closed this as not planned Won't fix, can't repro, duplicate, stale Jan 5, 2024
@ghost ghost locked as resolved and limited conversation to collaborators Feb 7, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
affected-few This issue impacts only small number of customers area-blazor Includes: Blazor, Razor Components area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework feature-blazor-wasm This issue is related to and / or impacts Blazor WebAssembly Pillar: Technical Debt severity-nice-to-have This label is used by an internal tool task
Projects
None yet
Development

No branches or pull requests