[PATCH 09/11] Optimise fetching checks when displaying a patch
Stephen Finucane
stephen at that.guru
Sat Sep 1 00:14:38 AEST 2018
On Fri, 2018-08-10 at 18:01 +1000, Stewart Smith wrote:
> Prior to this patch, a typical /patch// query for linuxppc-dev
> (which has about half a dozen checks per patch) took around 20 queries
> and 16.5ms in the database. About half of those queries were fetching
> the checks and who did the check.
>
> We can just do one query to get all that needed information, so we do
> that. This brings a page load down to 10 queries in 12ms.
>
> Signed-off-by: Stewart Smith <stewart at linux.ibm.com>
Yet again, "don't do stuff in templates". This is the fix I referenced
in the review for patch 1. I'm actually rather annoyed I didn't see
this myself sooner.
Reviewed-by: Stephen Finucane <stephen at that.guru>
Stephen
> ---
> patchwork/templates/patchwork/submission.html | 4 ++--
> patchwork/views/patch.py | 1 +
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/patchwork/templates/patchwork/submission.html b/patchwork/templates/patchwork/submission.html
> index 3b6f9fbe909e..72bc947c3f2d 100644
> --- a/patchwork/templates/patchwork/submission.html
> +++ b/patchwork/templates/patchwork/submission.html
> @@ -216,7 +216,7 @@ function toggle_div(link_id, headers_id)
> >{{ submission.pull_url }}</a>
> {% endif %}
>
> -{% if submission.checks %}
> +{% if checks %}
> <h2>Checks</h2>
> <table class="checks">
> <tr>
> @@ -224,7 +224,7 @@ function toggle_div(link_id, headers_id)
> <th>Check</th>
> <th>Description</th>
> </tr>
> -{% for check in submission.checks %}
> +{% for check in checks %}
> <tr>
> <td>{{ check.user }}/{{ check.context }}</td>
> <td>
> diff --git a/patchwork/views/patch.py b/patchwork/views/patch.py
> index e1d0cdcfcf39..fbde04280844 100644
> --- a/patchwork/views/patch.py
> +++ b/patchwork/views/patch.py
> @@ -119,6 +119,7 @@ def patch_detail(request, patch_id):
> comments = comments.only('submitter','date','id','content','submission')
>
> context['all_series'] = patch.series.all().order_by('-date')
> + context['checks'] = patch.check_set.all().select_related('user')
> context['comments'] = comments
> context['submission'] = patch
> context['patchform'] = form
More information about the Patchwork
mailing list