使用Cython和Django。是否有意义?

时间:2010-08-21 21:44:46

标签: python django cython

是否可以使用Cython优化Django开发的关键任务应用程序的速度?

最近我在互联网上看到,Cython可以将Python代码转换为C类似速度。 Django有可能吗?

6 个答案:

答案 0 :(得分:30)

  

是否可以使用Cython

优化在Django中开发的关键任务应用程序的速度

这是值得怀疑的。

大多数Web应用程序响应时间都是必须单独下载的非HTML元素。通常的经验法则是每个HTML页面有8个静态文件。 (.CSS,.JS,图像等)

由于这些静态内容都不是来自Django,因此大多数Web应用程序的时间线都是Apache(或者是Django之外的Nginx或其他一些服务器软件)。

在查看生成HTML的时候,您会发现大部分时间都花在等待数据库上(即使它是内存中的SQLite,您会看到数据库倾向于占据时间轴) )

当您通过制作Apache并快速创建数据库时,那么 - 只有这样 - 您才能考虑Python元素。

底线。不要浪费任何时间让Django和Python变得更快。

答案 1 :(得分:24)

嗯,是的,但是除非你有确凿的证据,否则网络应用所做的大多数事情都不会从这种变化中获益。配置文件两次,优化一次。

答案 2 :(得分:11)

从概念上讲,你所追求的是可能的,但你正朝着错误的方向前进。

你真的应该对PyPy感兴趣,这是一个非常有前途的Django(和Python)社区技术。与普通Python相比,Django在PyPy上的基准测试已经显示 12.5X速度增益。现在,即使前端静态资源可能有助于最终用户的大部分页面响应(根据S.Lott的回答),但这并未解决服务器端速度增益极为重要的现实。由于这个原因,Facebook不得不发明HipHop PHP ...... PHP的滞后无法削减它。言归正传,只需考虑Meebo(一个蟒蛇驱动的网站)每月在服务器基础设施上花费数万美元。现在您可以通过PyPy品尝服务器成本节省吗?性感!

查看基准:http://speed.pypy.org/

答案 3 :(得分:5)

与其他答案相呼应,这不可能获得任何特定的收益,除非您已经描述了可以获得某些好处的特定案例。

添加答案,我想指出雅虎网络团队的网络优化列表。这些是适用于许多网站的领域的衡量和证明的收益,值得研究:

  

Exceptional Performance团队已经确定了一些快速制作网页的最佳实践。该清单包括35个最佳实践,分为7个类别。

答案 4 :(得分:4)

我们已经构建了一个安装在名为InProd的客户站点上的应用程序,它管理Genesys供电联络中心的配置。这是一个用Cython编译的Django应用程序。

速度有所改善,但并不大。我们需要每秒处理大量请求,这样做的主要延迟是由数据库引起的。最大的收获来自于数据库调优和良好的SQL。

您需要非常强烈地需要做这样的事情,因为它会导致问题,它会增加我们的测试要求。

某些任务的性能差异很大,但不是全部。因此,改进将取决于您的应用程序正在做什么。

答案 5 :(得分:1)

这取决于后端是否有繁重的过程。就我而言,它可以改善其中一个流程并将其加速5倍。我有一个功能可以对用户输入的大型XML文件进行返工并将输出保存到数据库中。告诉Cython,在某些地方输入或输出是字符串,这使5倍加速魔术了。