[bitbake-devel] [PATCH 05/17] toastergui: improve performance in the all targets page

Alex DAMIAN alexandru.damian at intel.com
Thu Mar 12 10:46:38 UTC 2015


From: Alexandru DAMIAN <alexandru.damian at intel.com>

This patch improves performance in the all targets display
by computing the preffered layer only for displayed targets,
instead of computing for all targets.

Signed-off-by: Alexandru DAMIAN <alexandru.damian at intel.com>
---
 lib/toaster/toastergui/views.py | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index 9f1fbca..5b481cb 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -2752,21 +2752,21 @@ if toastermain.settings.MANAGED:
 
         queryset_with_search = _get_queryset(Recipe, queryset_all, None, search_term, ordering_string, '-name')
 
-        # get unique values for 'name' and 'version', and select the maximum ID for each entry (the max id is the newest one)
+        # get unique values for 'name', and select the maximum ID for each entry (the max id is the newest one)
         queryset_with_search_maxids = queryset_with_search.values('name').distinct().annotate(max_id=Max('id')).values_list('max_id')
 
-        queryset_with_search = queryset_with_search.filter(id__in=queryset_with_search_maxids).select_related('layer_version', 'layer_version__layer')
+        queryset_with_search = queryset_with_search.filter(id__in=queryset_with_search_maxids).select_related('layer_version', 'layer_version__layer', 'layer_version__up_branch')
 
-        objects = list(queryset_with_search)
-        for e in objects:
-            e.preffered_layerversion = e.layer_version.get_equivalents_wpriority(prj)[0]
 
         # retrieve the objects that will be displayed in the table; targets a paginator and gets a page range to display
-        target_info = _build_page_range(Paginator(objects, request.GET.get('count', 10)),request.GET.get('page', 1))
+        target_info = _build_page_range(Paginator(queryset_with_search, request.GET.get('count', 10)),request.GET.get('page', 1))
+
+        for e in target_info.object_list:
+            e.preffered_layerversion = e.layer_version.get_equivalents_wpriority(prj)[0]
 
 
         context = {
-            'projectlayerset' : jsonfilter(map(lambda x: x.layercommit.id, prj.projectlayer_set.all())),
+            'projectlayerset' : jsonfilter(map(lambda x: x.layercommit.id, prj.projectlayer_set.all().select_related("layercommit"))),
             'objects' : target_info,
             'objectname' : "targets",
             'default_orderby' : 'name:+',
-- 
1.9.1




More information about the bitbake-devel mailing list