Python / django异常有多慢?

时间:2009-12-11 01:31:49

标签: python django exception

是python异常慢吗? 我正在使用python异常来构建我的Web应用程序中的programm,我想知道抛出异常将如何影响我的应用程序的性能。你的想法是什么?

以下哪一项声明在内存和CPU方面都较便宜?

try:
    artist = Artist.objects.get(id=id)
except:
    raise Http404


artist = Artist.objects.filter(id=id)
if not artist:
    return HttpResponse('404')

3 个答案:

答案 0 :(得分:15)

在性能方面,处理异常将是您最不担心的问题。但是,我建议您使用Django提供的快捷方式:

from django.shortcuts import get_object_or_404
artist = get_object_or_404(Artist, id=id)

将对象分配给artist或返回404.这是双赢的!

此外,您应该查看django-debug-toolbar,它为开发人员提供渲染/ CPU时间,上下文切换以及各种其他有用的数据花絮,可能只是您需要的工具。

答案 1 :(得分:10)

要真正了解系统的性能,您必须对其进行分析。但是Python是一种鼓励使用这样的异常的语言,所以它们没有像其他语言那样的异常开销。

例如,有时候人们会讨论这个选择:

if hasattr(obj, "attr"):
    use(obj.attr)
else:
    some_other(obj)

或:

try:
    use(obj.attr)
except AttributeError:
    some_other(obj)

那些说你应该使用第一个来避免异常的人需要了解内部,hasattr是通过访问属性实现的,如果引发AttributeError则返回False。事实上,两个代码块都使用异常。

答案 2 :(得分:8)

This guy做了一个很好的小写测试尝试/除了速度与dicts,我相信在你的情况下会有一些类比。无论哪种方式,做一个漂亮的配置文件将为您提供最好的信息。

相关问题