【问题标题】:Django with PyPyDjango 与 PyPy
【发布时间】:2011-05-28 06:47:54
【问题描述】:

在 PyPy 中使用 Django 有什么原因吗? 我读过 PyPy 提高了性能。

【问题讨论】:

标签: python django pypy


【解决方案1】:

不太可能。 Django 应用程序几乎总是 I/O-bound,通常是因为数据库连接。 PyPy 根本无济于事,即使它是纯粹兼容的(我不确定它是否兼容)。

【讨论】:

  • @Stanislav Feldman:分析它以查看瓶颈在哪里,然后从那里开始。如果您需要更多帮助,请在此处发布分析结果。
  • 过早的优化是个坏主意。在您开始之前,该项目非常为时过早。
  • 我不明白为什么“在开始项目之前进行优化”是一个坏主意......毕竟,你没有什么可失去的,你一开始做出的错误决定只会增加维护之后的负担。
  • @Jonathan 该图表充其量只是误导。如果你查看actual benchmark for Django,它只测试模板渲染:这确实是依赖于 CPU 的,但只是整个请求周期的一小部分。我的意见不变。
  • 模板渲染是请求周期中最难的部分,假设您的查询足够快(在我的情况下,所有查询都在不到 10 毫秒的时间内完成,但模板渲染大约需要 100-200 毫秒)
【解决方案2】:

视情况而定。

PyPy 确实提高了 PyPy 基准套件中所有基准的性能。目前这只是模板渲染,但没有人提交任何其他内容。然而,可以安全地假设性能关键代码会更快(尤其是经过一些调整之后)。

兼容性方面的数据库有点问题,因为只有 sqlite 可以工作,而且速度很慢(不过有一个分支可以修复它)。例如,人们还报告 pg8000 使用 sqlalchemy,但我没有第一手经验。

干杯, 菲哈尔

【讨论】:

    【解决方案3】:

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

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

    • 我认为一台服务器可能会从 JIT 编译中受益,因为它在某些请求中进行了花哨的计算,但内存占用增加了,这可能是因为 JIT 存储的跟踪结果对每个请求都是唯一的,因此从未重用?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多