[PATCH 04/11] Fetch all series for patch/cover viewing

Stephen Finucane stephen at that.guru
Sat Sep 1 00:09:27 AEST 2018


On Fri, 2018-08-10 at 18:00 +1000, Stewart Smith wrote:
> e.g. a 10 comment patch goes from 26 queries in 17-20ms down to 20
> queries in 12ms.
> 
> A 67 comment cover letter goes from 14 queries in 16ms down to 8 queries
> in 8ms.
> 
> So, effectively, a near 2x perf improvement.
> 
> Previously, at several points we were asking for the latest series and
> then asking for all the series. Since there just usually aren't *that*
> many series, fetch them all and take the first one if we need to.
> 
> Signed-off-by: Stewart Smith <stewart at linux.ibm.com>

Another "don't do stuff like this in templates" example. This one also
makes sense to me and definitely improves performance.

Reviewed-by: Stephen Finucane <stephen at that.guru>

Stephen

> ---
>  patchwork/templates/patchwork/submission.html | 10 +++++-----
>  patchwork/views/cover.py                      |  2 +-
>  patchwork/views/patch.py                      |  1 +
>  3 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/patchwork/templates/patchwork/submission.html b/patchwork/templates/patchwork/submission.html
> index 2f69735d6925..3b6f9fbe909e 100644
> --- a/patchwork/templates/patchwork/submission.html
> +++ b/patchwork/templates/patchwork/submission.html
> @@ -64,15 +64,15 @@ function toggle_div(link_id, headers_id)
>     </div>
>    </td>
>   </tr>
> -{% if submission.latest_series %}
> +{% if submission.all_series %}
>   <tr>
>    <th>Series</th>
>    <td>
>     <div class="patchrelations">
>      <ul>
> -     {% for series in submission.series.all %}
> +     {% for series in all_series %}
>       <li>
> -      {% if series == submission.latest_series %}
> +      {% if forloop.first %}
>         {{ series }}
>        {% else %}
>         <a href="{% url 'patch-list' project_id=project.linkname %}?series={{ series.id }}">
> @@ -93,7 +93,7 @@ function toggle_div(link_id, headers_id)
>     >show</a>
>     <div id="patchrelations" class="patchrelations" style="display:none;">
>      <ul>
> -    {% with submission.latest_series.cover_letter as cover %}
> +    {% with all_series.cover_letter as cover %}
>       <li>
>       {% if cover %}
>        {% if cover == submission %}
> @@ -106,7 +106,7 @@ function toggle_div(link_id, headers_id)
>       {% endif %}
>       </li>
>      {% endwith %}
> -    {% for sibling in submission.latest_series.patches.all %}
> +    {% for sibling in all_series.patches.all %}
>       <li>
>        {% if sibling == submission %}
>         {{ sibling.name|default:"[no subject]"|truncatechars:100 }}
> diff --git a/patchwork/views/cover.py b/patchwork/views/cover.py
> index edad90bc694d..1ee2b3f988fa 100644
> --- a/patchwork/views/cover.py
> +++ b/patchwork/views/cover.py
> @@ -49,7 +49,7 @@ def cover_detail(request, cover_id):
>      comments = comments.select_related('submitter')
>      comments = comments.only('submitter','date','id','content','submission')
>      context['comments'] = comments
> -
> +    context['all_series'] = cover.series.all().order_by('-date')
>      return render_to_response('patchwork/submission.html', context)
>  
>  
> diff --git a/patchwork/views/patch.py b/patchwork/views/patch.py
> index f43fbecd9a4d..e1d0cdcfcf39 100644
> --- a/patchwork/views/patch.py
> +++ b/patchwork/views/patch.py
> @@ -118,6 +118,7 @@ def patch_detail(request, patch_id):
>      comments = comments.select_related('submitter')
>      comments = comments.only('submitter','date','id','content','submission')
>  
> +    context['all_series'] = patch.series.all().order_by('-date')
>      context['comments'] = comments
>      context['submission'] = patch
>      context['patchform'] = form




More information about the Patchwork mailing list