2010-01-07 57 views
2

我壓力測試2個不同的項目:一個是proxsmtpd - 用C編寫的smtp代理 另一個smtp_proxy.py,我用1小時開發,使用asyncore和smtpd python模塊。Python asyncore vs普通老C

我強調這兩個項目在重負載下, 並發現proxsmtpd能夠容納400個SMTP會話/秒, 而我的Python程序,是能夠做到的只有160 SMTP會話/秒。

所以,我的問題是,是否因爲在asyncore中有一些性能限制, 或C程序只是更快?或者也許是我,以低效的方式使用asyncore?

+0

如果你對Python相當陌生,那麼可以肯定的是,你以低效的方式做事情。 Python的新手通常會寫「C風格」的東西,遍歷字符串中的單個字符,而不是有效地使用Python原語,通常工作在太低的水平。除非你確定你的方法是「Pythonic」和高效的,否則Noufal對配置文件的建議是很好的:如果你不知道爲什麼最慢的代碼太慢,就用代碼發佈更新。 – 2010-01-07 17:45:39

回答

2

我認爲這是給予 C版和良好 Python版本一個合理的假設,C版本將更快,更靈活的,但在你的情況,你可能想運行一個分析器,看看爲什麼以及你的程序不能像C版本那樣擴展的地方。也許你可以發現緊密點並優化它以從代碼中擠出更多性能。另外,我對asyncore知之甚少,但是當他們想要做異步的東西扭曲時,人們似乎傾向於第一個Python庫。所以,也許這裏有一個性能改進。