Description
Reproduction
https://stackblitz.com/edit/github-afjnf8?file=src%2Frouter.ts
Steps to reproduce the bug
- Run project and test the performance using
ab
orsiege
and compare the results.- I tested with the following command
siege -t 10s -c 100 "http://localhost:3000/"
to see the amount of requests within 10s using 100 concurrent users.
- I tested with the following command
- Change the
dirCount
variable to adjust the amount of routes generated/used (default100
, which generates 1101 routes). and test again.
Expected behavior
Expected the amount of routes to have an impact on performance comparable to router v3. The performance difference is noticeable for SSR as a new router instance is created on each request.
Actual behavior
Router creation doesn't scale as well as it did in v3 (presumably, I have no clean reproduction with v3 Router alone), please view the result comparison in this issue nuxt/nuxt#25612 which compares Nuxt 2 and Nuxt 3.
If you have a clean/plain SSR project using router v3 I would be happy to include a reproduction with a performance comparison between v3 and v4, I tried making one but had no luck.
Additional information
While debugging performance issues for @nuxtjs/i18n
narrowed it down to the difference in performance between Nuxt 2 and Nuxt 3, specifically the performance impact of having a high amount of routes. Related issue here: nuxt/nuxt#25612
Due to the way i18n routing works (same as in i18n for Nuxt 2), routes are generated/multiplied by the amount of configured languages. Of course I will look into alternative ways to make routing more efficient/performant when using i18n, but it's worth looking into why the performance of router creation has gotten worse and how we can improve it.
My first guess would be that insertMatcher
doesn't scale very well, I couldn't find its equivalent in v3.
Metadata
Assignees
Labels
Type
Projects
Status
📆 Planned
Activity