Django与PyPy

Sta*_*tan 15 python django pypy

有没有使用Django和PyPy的原因?我读了PyPy增加性能.

Dan*_*man 22

不太可能.Django应用程序几乎总是受I/O约束,通常是因为数据库连接.PyPy完全没有帮助,即使它纯粹兼容(我不确定).

  • 过早优化是个坏主意.在您开始之前,该项目非常*过早. (5认同)
  • 我不明白为什么"在开始项目之前进行优化"是一个坏主意......毕竟,你没有什么可失去的,你在一开始做出的错误决定只会增加后来的维护负担. (5认同)
  • @Stanislav Feldman:了解瓶颈的位置,然后从那里开始.如果您需要更多帮助,请在此处发布分析结果. (3认同)
  • @Jonathan这个图表充其量是误导.如果你看一下[Django的实际基准](http://codespeak.net/svn/pypy/benchmarks/unladen_swallow/performance/bm_django.py),它只测试模板渲染:这确实是CPU依赖的,但仅限于完整请求周期的一小部分.我的评论代表. (3认同)
  • 模板渲染是请求周期中最难的部分,假设您的查询足够快(在我的情况下,所有查询都在不到10毫秒内完成,但模板渲染大约为100-200毫秒) (2认同)

fij*_*jal 10

要看.

PyPy确实提高了PyPy基准测试套件中所有基准测试的性能.这只是现在的模板渲染,但没有人提交任何其他内容.然而,假设性能关键代码将更快(特别是在一些调整之后),这是安全的.

兼容性方面的数据库有点问题,因为只有sqlite工作且速度很慢(虽然有一个分支来修复它).人们还报告pg8000与sqlalchemy合作,但我没有第一手经验.

干杯,fijal


pdc*_*pdc 6

我对 PyPy + Django 做了一些实验。主要有两个问题:

  • 大多数数据库适配器和其他第三方模块不能用 PyPy 编译(即使维基说可以)。

  • 我认为可能会从 JIT 编译中受益的一台服务器,因为它在某些请求中进行了奇特的计算,但内存占用越来越大,也许是因为 JIT 存储的跟踪结果对于每个请求都是唯一的,因此从未被重用?

理论上,如果您的服务器正在执行有趣的计算、使用纯 Python 模块并且在内存中有大量对象(因为 PyPy 可以减少每个对象在某些情况下使用的内存),那么 PyPy 可能是一个胜利。否则 JIT 对内存的更高要求将是一个障碍,因为它减少了内存缓存的机会,并且可能需要额外的服务器来运行足够的服务器进程。