2016-05-14 5 views
-1

tun werde Ich bin von Zeit zu Zeit konfrontiert mit einer Wahl, wo ich meine for-Schleifen und ein Ganzes viele andere BerechnungenJinja oder Python, um schwere Berechnungen zu tun, die ist ideal und gibt es eine Performance-Wirkung, wenn ich es in Jinja

betrachten Sie den Code unten

isp_ratings_per_service =  db.session.query(func.count(Service_metric_ratings.ratings_id).label('count_of_users'), \ 
               func.sum(Service_metric_ratings.ratings_id).label('sum_of_ratings'), 
               Isps.isp_name, Service_metric.metric_name, Services.service_name) \ 
     .filter(Service_metric_ratings.isp_id == Isps.isp_id) \ 
     .filter(Service_metric_ratings.ratings_id == Ratings.ratings_id) \ 
     .filter(Service_metric_ratings.metric_id == Service_metric.metric_id) \ 
     .filter(Service_metric_ratings.user_id == User.user_id) \ 
     .filter(Service_metric_ratings.service_id == Services.service_id) \ 
     .filter(Service_metric.metric_name == metric_name) \ 
     .filter(Services.service_name == service_name) \ 
     .group_by(Isps.isp_name) 

dieser for-Schleife unten, erhalten mne, was ich in den Kolben/python Routen wollen

for i in isp_ratings_per_service: 
     my_count=i.count_of_users 
     my_ratings=i.sum_of_ratings 
     isp=i.isp_name 

Und wenn ich will die average_ berechnen Bewertungen, wird es

my_ratings/my_count 

sein, und ich kann das Ergebnis auf die jinja Vorlagen .... wie dies ohne Probleme

return render_template('view_average_isp_ratings.html', 
           isp_ratings_per_service=isp_ratings_per_service, 
           count_of_users_who_rated=count_of_users_who_rated, 
           average_isp__service_ratings=average_isp__service_ratings, 
           ) 

Meine Frage ist dann folgt, übergeben, was, wenn ich alles mit jinja verarbeiten ... wird es meine Anwendung verlangsamen ..

+1

Warum versuchen Sie nicht beide und Profil, um zu sehen, ob es ein Problem gibt? Abhängig davon, wie viel Sie verarbeiten, ist es wahrscheinlich, dass diese Zeit im Vergleich zu den Netzwerkgeschwindigkeiten irrelevant ist. – jonrsharpe

Antwort

0

Nach Jinja2 docs, sollten Sie minimieren Logik in Jinja so viel wie möglich zu setzen. In Jinja etwas Logik zu machen, ist in Ordnung und macht alles einfacher, aber all das in Jinja zu tun, erscheint nicht sehr vernünftig.

Verwandte Themen