@@ -262,7 +262,7 @@ function toggle_div(link_id, headers_id)
</pre>
</div>
-{% for item in submission.comments.all %}
+{% for item in comments %}
{% if forloop.first %}
<h2>Comments</h2>
{% endif %}
@@ -45,6 +45,11 @@ def cover_detail(request, cover_id):
'project': cover.project,
}
+ comments = cover.comments.all()
+ comments = comments.select_related('submitter')
+ comments = comments.only('submitter','date','id','content','submission')
+ context['comments'] = comments
+
return render_to_response('patchwork/submission.html', context)
@@ -114,6 +114,11 @@ def patch_detail(request, patch_id):
if is_authenticated(request.user):
context['bundles'] = request.user.bundles.all()
+ comments = patch.comments.all()
+ comments = comments.select_related('submitter')
+ comments = comments.only('submitter','date','id','content','submission')
+
+ context['comments'] = comments
context['submission'] = patch
context['patchform'] = form
context['createbundleform'] = createbundleform
Using the example of id:20180720035941.6844-1-khandual@linux.vnet.ibm.com with my test dataset of a chunk of a variety of mailing lists, has this cover letter have 67 comments from a variety of people. Thus, it's on the larger side of things. Originally, displaying the /patch/550/ for this (redirected to /cover) would take 81 SQL queries in ~60ms on my laptop. After this optimisation, it's down to 14 queries in 14ms. When the cache is cold, it's down to 32ms from 83ms. The effect of this patch is to execute a join in the database to get the submitter information for each comment at the same time as getting all the comments rather than doing a one-by-one lookup after the fact. Signed-off-by: Stewart Smith <stewart@linux.ibm.com> --- patchwork/templates/patchwork/submission.html | 2 +- patchwork/views/cover.py | 5 +++++ patchwork/views/patch.py | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) --- Changes since v1: don't fat finger patch viewing (s/cover/patch/)