【发布时间】:2011-03-06 02:06:16
【问题描述】:
我想知道使用纯 python 文件制作网页和使用 Django 之间的性能差异是什么。我只是想知道两者之间是否存在显着差异。谢谢
【问题讨论】:
我想知道使用纯 python 文件制作网页和使用 Django 之间的性能差异是什么。我只是想知道两者之间是否存在显着差异。谢谢
【问题讨论】:
Django 是普通的 Python。所以每个like语句或表达式的执行时间都是一样的。需要了解的是,在为 Web 开发时,许多组件组合在一起提供了几个优势:
现在,如果您要从头开始编写自己的网站,您至少需要自己实现几个组件。除非您花费大量时间开发您的网站,否则您也会失去上述大部分好处。 Django 和其他所有语言的其他 Web 框架旨在提供通用的东西,让您直接处理业务需求。
如果您在 Web 框架兴起之前曾在 PHP 中使用过自定义会话代码和数据访问代码,您甚至不会想到与让您的工作更有趣和更轻松的框架相关的性能成本。
现在,也就是说,Django 附带了很多组件。它的设计方式在大多数情况下不会影响您。尽管如此,每个请求都会执行大量的代码。如果您使用 Django 构建一个站点,但性能并没有降低它,您可以随意删除所有不需要的位。或者,您可以使用“苗条”python 框架。
真的,只需使用 Django。这真是太棒了。它为许多站点提供动力,比您(或我)将要构建的任何站点大几百万倍。有一些方法可以显着提高性能,例如利用缓存,而不是优化自定义中间件的循环。
【讨论】:
取决于您的“普通 Python”如何制作网页。例如,如果它使用模板引擎,那么该引擎的性能将会产生巨大的差异。如果它使用数据库,那么您使用什么样的数据访问层(根据该层的要求)将会产生影响。
因此,问题变成了一个问题,即您的任意(目前未说明的)工具链选择是否比 Django 选择的工具链具有更好的运行时性能。如果性能是您首要的、压倒一切的目标,那么您当然应该能够做出更优化的选择。但是,就总体成本而言 - 即。为运行时间较慢的选项购买更多的网络服务器,而不是为更多的工作开发选项购买更多的程序员时间——这个问题有太多的开放元素无法回答。
【讨论】:
.py 文件只是“打印”到 stdout 以显示 HTML 等,中间也需要一些胶水将进入网络服务器的请求转换为Python 解释器将理解并正确分派它们以最终执行您的 .py 文件的输入。那么,您需要自己实现这个中间件才能进行良好的比较。但是,“脚本”在哪里结束,Web 框架从哪里开始呢?最后,您实际上是在尝试重新发明 Django,或者自己实现一个新框架。
过早的优化是万恶之源。
如果您在进行 Web 开发,Django 会让事情变得非常方便。如果您正在做认真的工作,那么加上拥有数百个用于常见任务的插件的社区将是一个真正的福音。
即使您的“原始”实现速度更快,我认为它也不会快到足以严重影响您的 Web 应用程序。使用在正确抽象级别工作的工具构建它,如果性能是一个问题,测量它并找出瓶颈所在并应用优化。如果在这一切之后你发现 Django 创建的抽象正在减慢你的应用程序的速度(我不希望他们会这样),你可以考虑转移到另一个框架或手动编写一些东西。您可能会发现,您可以通过缓存、多台服务器之间的负载平衡以及执行“常用技巧”而不是通过重新实现 Web 框架本身来提高性能。
【讨论】:
Django 也是 普通 Python。
查看性能主要取决于代码的效率。
软件的大部分性能问题源于低效的代码,而不是工具和语言的选择。所以执行很重要。 AFAIK Django 在这方面做得非常出色,而且它的性能也超过了标准。
【讨论】: