【问题标题】:Python asyncore vs plain old CPython asyncore 与普通的旧 C
【发布时间】:2011-01-02 14:14:44
【问题描述】:

我正在对 2 个不同的项目进行压力测试:一个是 proxsmtpd - 用 C 编写的 smtp 代理 另一个是 smtp_proxy.py,我在 1 小时内开发的,使用了 asyncore 和 smtpd python 模块。

我强调了这两个项目都承受着沉重的负担, 并发现 proxsmtpd 能够保持 400 smtp 会话/秒, 而我的 python 程序,只能执行 160 个 smtp 会话/秒。

所以,我的问题是,是不是因为 asyncore 中存在一些性能限制, 还是 C 程序更快?或者可能是我,以低效的方式使用 asyncore?

【问题讨论】:

  • 如果您是 Python 的新手,那么可以肯定您的工作效率很低。 Python 的新手经常会写“C 风格”的东西,迭代字符串中的单个字符,没有有效地使用 Python 原语,通常工作在太低的级别。除非您确定您的方法是“Pythonic”且高效,否则 Noufal 的概要分析建议是好的:这样做,如果您不知道为什么最慢的代码如此缓慢,请发布代码更新。

标签: python proxy smtp asyncore smtpd


【解决方案1】:

我认为这是一个公平的假设,即给定一个 good C 版本和一个 good Python 版本,C 版本将更快且更具可扩展性,但在您的情况下,您可能想运行一个分析器,看看你的程序为什么以及在哪里没有像 C 版本那样扩展。也许您可以发现这些漏洞并对其进行优化,以从您的代码中挤出更多的性能。另外,我对 asyncore 了解不多,但是当人们想要做异步的东西时,他们似乎倾向于第一个 Python 库。所以,也许那里有性能改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2022-07-06
    • 1970-01-01
    • 2010-10-18
    相关资源
    最近更新 更多