Python Asyncore против простого старого C - PullRequest
2 голосов
/ 07 января 2010

Я стресс-тестирование 2 разных проектов: один является proxsmtpd - SMTP-прокси, написанный на C А другой, smtp_proxy.py, который я разработал за 1 час, с использованием модулей Python asyncore и smtpd.

Я подчеркнул оба проекта под большой нагрузкой, и обнаружил, что proxsmtpd способен удерживать 400 сеансов SMTP / сек, в то время как моя программа на Python, может делать только 160 сеансов SMTP /sec.

Итак, мой вопрос, делает ли это, потому что есть некоторые ограничения производительности в асинхронном режиме, или программы на С просто быстрее? Или, может быть, это я, использующий асинкор неэффективно?

1 Ответ

2 голосов
/ 07 января 2010

Я думаю, что справедливо предположение, что при хорошей версии C и хорошей версии Python версия C будет быстрее и более масштабируемой, но в вашем случае вы можете запустить профилировщик и посмотреть, почему и где ваша программа не масштабируется так сильно, как версия C. Возможно, вы сможете выявить узкие места и оптимизировать их, чтобы увеличить производительность вашего кода. Кроме того, я не знаю много об асинхронности, но первая библиотека Python, на которую люди, похоже, тяготеют, когда они хотят делать асинхронные вещи, искажается. Так что, возможно, там есть улучшение производительности.

...