Pour les personnes qui préfèrent les mesures de test (Postresql):
Si nous avons un modèle Person simple et 1000 instances de celui-ci:
class Person(models.Model):
name = models.CharField(max_length=100)
age = models.SmallIntegerField()
def __str__(self):
return self.name
En moyenne, cela donne:
In [1]: persons = Person.objects.all()
In [2]: %timeit len(persons)
325 ns ± 3.09 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [3]: %timeit persons.count()
170 ns ± 0.572 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
Alors, comment pouvez-vous voir count()
presque 2 fois plus vite que len()
dans ce cas de test particulier.