2013-07-19 6 views
4

Je tente de comparer la vitesse de plusieurs requêtes différentes qui retournent la même chose sur Django 1.4 avec Postgres. Malheureusement, si j'utilise:Timing Django DB Queries

import logging 
l = logging.getLogger('django.db.backends') 
l.setLevel(logging.DEBUG) 
l.addHandler(logging.StreamHandler()) 

Deux requêtes équivalentes ou similaires finissent par être renvoyées au cache de la requête. De toute façon je peux effacer ce cache ou avoir une meilleure façon de comparer la vitesse de deux requêtes?

+0

que j'aimerais certainement savoir aussi. +1 –

+1

Pourquoi ne pas installer [django-debug-toolbar] (https://github.com/django-debug-toolbar/django-debug-toolbar) – mVChr

+0

Django-debug-toolbar est déjà installé, mais cela ne fonctionne pas de nombreuses instances (c'est-à-dire les requêtes AJAX), et n'est pas vraiment efficace dans les requêtes de benchmarking puisque j'ai besoin de les charger dans une vue et de les tester manuellement. En outre, si vous exécutez deux des mêmes requêtes, depuis sa mise en cache, l'heure de la deuxième requête sera significativement plus courte. – zhuyxn

Répondre

2

Pour mon analyse, j'utilise quelque chose comme ceci:

from django import db 
for query in db.connections['default'].queries: 
    print query, query['time'] 
+0

En outre, consultez http://stackoverflow.com/questions/2133627/using-django-db-connection-queries – steffens21

+0

Cette solution a le même problème que le mien et la suggestion ci-dessus, ce qui veut dire que puisque Django met en cache des ensembles de requêtes, si vous exécutez une même opération ou une opération similaire deux fois dans une période de temps déterminée, les temps de récupération seront significativement différents): – zhuyxn