哪个更快:使用django数据库order_by还是列表排序?

时间:2013-07-22 23:38:21

标签: python django django-database

我有一个带有scorequizzes_done的Django模型。我想计算得分和quizzes_done的百分位数。为此,我需要创建两个排序列表。对于第一个,我做:

s_recs = MyRecord.objects.all().order_by('score')
score_list = [r.score for r in s_recs]

我也可以这样做以获得排序quiz_list或者我可以使用python排序。我想知道哪一个更快。

使用我们上面提到的s_recs并执行

quizzes_list = [r.quizzes_done for r in s_recs]
quizzes_list.sort()

OR

q_recs = MyRecord.objects.all().order_by('quizzes_done')
quizzes_list = [r.quizzes_done for r in q_recs]

1 个答案:

答案 0 :(得分:1)

这是一个小功能,您可以将它们传递给时间:

def timedcall(fn, *args):
    "Call function with args; return the time in seconds and result."
    t0 = time.clock()
    result = fn(*args)
    t1 = time.clock()
    return t1-t0, result

这将返回您调用的函数返回的时间和结果。我想你会发现,除非你排出数以万计的记录,否则几乎没什么区别,但我很想听听结果。