Python Asyncore против обычного старого c
Вопрос
Я тестирую стресс -тестирование 2 разных проектов: один - ProxSMTPD - SMTP -прокси, написанный в C, а другой - smtp_proxy.py, который я разработал в течение 1 часа, с использованием асинкорновых и SMTPD модулей Python.
Я подчеркнул оба проекта под тяжелой нагрузкой и обнаружил, что ProxSMTPD может провести 400 SMTP -сеансов / SEC, в то время как моя программа Python может выполнять только 160 SMTP -сеансов / сек.
Итак, мой вопрос: это потому, что в асинкоре есть некоторые ограничения на производительность, или программы C просто быстрее? Или, может быть, это я, используя асинкоры неэффективно?
Решение
Я думаю, это справедливое предположение, с учетом хороший C версия и хороший Версия Python, версия C будет быстрее и масштабируемой, но в вашем случае вы, возможно, захотите запустить профилировщик и понять, почему и где ваша программа не увеличивается, как версия C. Возможно, вы сможете раскрыть узкие места и оптимизировать их, чтобы выжать еще немного производительности из вашего кода. Кроме того, я не знаю много об асинкоре, но первая библиотека Python, похоже, стремится к тому, что они хотят делать асинхронные вещи, искажены. Так что, возможно, там есть улучшение производительности.