Django和原始Python之间的性能

rts*_*ker 4 python django

我想知道使用普通python文件制作网页和使用Django之间的性能差异.我只是想知道两者之间是否存在显着差异.谢谢

Jos*_*ton 10

Django是普通的Python.所以每个like语句或表达式的执行时间都是一样的.需要理解的是,在为Web开发时,许多组件被组合在一起以提供若干优势:

  • 将常见任务移除到库中(身份验证,数据访问,模板,路由)
  • 算法的正确性(cookies/sessions,crypto)
  • 减少自定义代码(由于库)直接影响错误计数,开发时间等
  • 以下约定可以改善团队工作,并能够理解代码
  • 外挂能力; 创建或查找可以以最小集成成本使用的新功能块
  • 文档和帮助; 很多人都了解技术并能够提供帮助(StackOverflow?)

现在,如果您要从头开始编写自己的站点,则需要自己实现至少几个组件.除非您花费大量时间开发网站,否则您也会失去上述大部分优惠.Django和其他语言的其他Web框架旨在提供常见的东西,让您直接处理业务需求.

如果您在Web框架兴起之前曾在PHP中使用自定义会话代码和数据访问代码,那么您甚至不会想到与使您的工作变得有趣且易于使用的框架相关的性能成本.

现在,说,Django有很多组件.它以这样的方式设计,大多数时候,它们不会影响你.尽管如此,仍然会为每个请求执行大量代码.如果您使用Django构建一个站点,并且性能不会削减它,您可以随意删除所有不需要的位.或者,您可以使用"纤细"的python框架.

真的,只需使用Django.这太棒了.它为许多站点提供了数百万倍于你(或我)构建的站点.有一些方法可以显着提高性能,例如利用缓存,而不是优化自定义中间件的循环.

  • 就个人而言,我不会以不合格的"只使用Django"结束 - 如果他有更高级的ORM需求,例如,与SQLAlchemy更紧密集成的框架可能是理想的.另一方面,你试图传达的最重要的事情(不要试图自己做什么,为你做的无数工具)是现实. (2认同)

Cha*_*ffy 5

取决于您的“普通 Python”如何制作网页。例如,如果它使用模板引擎,那么该引擎的性能就会产生巨大的差异。如果它使用数据库,那么您使用哪种数据访问层(在该层的要求的上下文中)将会有所不同。

因此,问题变成了您的任意(目前未声明)工具链选择是否比 Django 选择的工具链具有更好的运行时性能。如果性能是您的首要目标,那么您当然应该能够做出更优化的选择。然而,就总体成本而言——即。为运行时间较慢的选项购买更多的 Web 服务器,而不是为更多的工作开发选项购买更多的程序员时间——这个问题只是有太多的开放元素无法回答。

  • @Corey:即使你的 `.py` 文件只是“打印”到 `stdout` 以显示 HTML 等,中间需要存在一些胶水来将进入网络服务器的请求转换为 Python 解释器能够理解的输入并正确分派它们以最终执行您的 .py 文件。那么您需要自己实现这个中间件才能进行很好的比较。但是,“脚本”从哪里结束,Web 框架从哪里开始呢?最后,您实际上是在尝试重新发明 Django,或者自己实现一个新框架。 (2认同)
  • “普通” .py 文件无法在网络服务器上显示任何内容 - 它们需要一些可以调用它们并让它们有机会生成 HTML 输出的东西。关于在这种情况下我能想到的最接近“普通”Python 的将是 CGI 脚本,然后性能仍然高度依赖于 web 服务器和 CGI​​ 网关,而且你错过了 Django 可以提供的所有细节. “过早优化是万恶之源”的格言适用于网络工具的选择,就像它适用于任何其他类型的编程一样。 (2认同)