On 15 Sep 18:10, Daniel Axtens wrote: > tl;dr: with about 300 mails from the patchwork list, according to > django-debug-toolbar, to render > http://localhost:8000/project/patchwork/list/ > > Without this patch: > - ~1.35 seconds of CPU time > - 110 SQL queries, taking ~70ms > > With this patch: > - < 0.3 seconds of CPU time > - 10 SQL queries, taking <20ms > > How? Replace an .exclude() on a QuerySet with a list comprehension. > Yes, that's normally a pessimisation. > Surprisingly, it's an optimisation here. > Why? Where we're looking at patches in anything that uses a generic_list() > in the view, we do a prefetch_related('check_set'). But, if we then do a > .filter or a .exclude, that throws out the existing, cached information, > and does another query. (See the Django docs on prefetch_related.) > > So, do it 'by hand' in Python instead. > > Signed-off-by: Daniel Axtens <d...@axtens.net>
Checks out for me. Reviewed-by: Stephen Finucane <stephenfinuc...@hotmail.com> _______________________________________________ Patchwork mailing list Patchwork@lists.ozlabs.org https://lists.ozlabs.org/listinfo/patchwork