【发布时间】:2019-12-07 03:11:26
【问题描述】:
即使过滤器可以处理对象的数量,为什么它很快?
正如我们所见,过滤器为您提供查询集,但 get 方法为您提供单个对象 但是如果我通过切片(无循环)选择单个对象或使用 get 方法选择对象,那么即使在拥有查询集之后,拥有查询集也不等于拥有所有对象
我试图获取时差
from time import time
def f1():
t0 = time()
User.objects.filter(username='risha')
print("Execution time of f1: {}".format(time() - t0))
def f2():
t0 = time()
User.objects.get(username='risha')
print("Execution time of f2: {}".format(time() - t0))
f1()
f2()
所以结论是 f1的执行时间:0.0009980201721191406 f2的执行时间:0.0029938220977783203
但是为什么过滤器在处理更多对象时却花费更少的时间?
【问题讨论】:
-
如果您想了解两个选项之间的时间差异,请尝试通过在循环中多次运行代码(例如 1000 或 10000)来进行分析。
-
为什么过滤器在处理更多对象时却花费更少的时间?
标签: django django-models django-rest-framework django-forms django-views