DaniilSokolyuk/NodeReact.NET

Performance and scalability

Closed this issue · 0 comments

Hi!

Thanks for a truly great and smart package!

I was looking at this package as an alternative to ReactJS.NET since I would like to be able to use React v18 and SSR for things like React.Suspense.

I'm running NodeJS on my machine and I played around with this library to compare, I like the API and it feels really easy to use. However, when I made a simple little comparison for the performance I was a little concerned. I basically had the same application with both libraries and just switched between them to run the test. I know that the test with NodeReact.NET probably should be slower since it handles/renders the content inside a React.Suspense-component and also since it's interop to node, but the throughput was quite low.

I used a simple tool called NetLing to send some requests to the server (was running IIS Express via Visual Studio) and found that:

  • NodeReact.NET served 19 rps with a median load time of 216 ms, while
  • ReactJS.NET served 3017 rps with a median load time of 0,5 ms.

This was done on a quite big machine with an Intel Core i9 12900K processor. I'm wondering if I did something wrong here? Are the numbers too off from what you would expect? Is there anything I can do to improve this? I'm thinking of configuration, set up etc. Is there any settings that would be "preferable" over others? I know that documentation is not the funniest thing to spend time on but I would very much like to try to squeeze as much as possible out of this to know if it would be a viable solution for upcoming projects so it would be valuable to know more about the "recommended" setup.

Once again, thank you very much for sharing the great work done so far!

simple-benchmarks

UPDATE:
I figured I wanted to try this again with only NodeReact.NET and it looks to me that there is something around the threading, when there are more threads hitting the page the RPS goes down maybe this is the interop to NodeJS that has some bottlenecks? It would interesting to see if and how things can be configured for better throughput.

image

*UPDATE AGAIN:
Rookie-mistake on my end. I was hitting the app when it was built in Debug-mode, after switching to Release mode I got a lot better throughput. It's strange that ReactJS.NET performed so much better in Debug mode but these numbers are a lot better than the once I saw in Debug mode.

Sorry for putting on a "false alarm". Maybe this is something that should be mentioned in docs somewhere so that people don't think that the package is slow.

image