-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
Made middleware path resolving lazy and refactored middleware names #5041
Conversation
When profiling, it was noticed that most of the CPU time is actually wasted in the middlewares when calling and resolving `reverse("api")`.
In the profiling trace we see "middleware" everywhere, making it impossible to know what middleware was being executed without having to lookup the path and line number that was provided by the trace.
c9fc37a
to
d941cfc
Compare
Here is the report for fe22c73 (NyanKiyoshi/saleor @ middlewares/lazy) No differences were found. (click me)
# api.benchmark checkout
test name left count right count duplicate count
------------------------------------------- ----------- ----------- ---------------
add billing address to checkout 34 34 20
add shipping to checkout 7 7 0
checkout payment charge 10 10 0
complete checkout 8 8 0
create checkout 50 50 24
# api.benchmark homepage
test name left count right count duplicate count
------------------------------------------- ----------- ----------- ---------------
retrieve main menu 5 5 0
retrieve product list 4 4 0
retrieve secondary menu 5 5 0
retrieve shop 2 2 0
# api.benchmark product
test name left count right count duplicate count
------------------------------------------- ----------- ----------- ---------------
product details 15 15 3
retrieve product attributes 9 9 0
# api.benchmark variant
test name left count right count duplicate count
------------------------------------------- ----------- ----------- ---------------
product variant bulk create 51 51 3
retrieve variant list 15 15 6
# api product sorting attributes
test name left count right count duplicate count
------------------------------------------- ----------- ----------- ---------------
sort product not having attribute data 21 21 0 |
Codecov Report
@@ Coverage Diff @@
## master #5041 +/- ##
==========================================
+ Coverage 90.89% 90.89% +<.01%
==========================================
Files 294 294
Lines 18273 18274 +1
Branches 1680 1681 +1
==========================================
+ Hits 16610 16611 +1
Misses 1227 1227
Partials 436 436
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for submitting the PR, this looks really good!
Changes
Made graphql api path' resolving lazy in middlewares:
When profiling, it was noticed that most of the CPU time is actually wasted in the middlewares when calling and resolving
reverse("api")
. For example, when querying theme
object, 28 ms of CPU time were used by thereverse("api")
and 5 ms were actually being the rest of the request being processed.Renamed middleware functions to meaningful names for easier profiling:
In the profiling trace we see "middleware" everywhere, making it impossible to know what middleware was being executed without having to lookup the path and line number that was provided by the trace.
middleware -> middleware -> middleware -> middleware. Who is who?
Pull Request Checklist