2013-01-12 11 views
17

Zarówno "pypy", jak i "gevent" mają zapewniać wysoką wydajność. Pypy jest podobno szybszy od CPython, podczas gdy gevent oparty jest na współprogramach i greenletach, co podobno daje szybszy serwer WWW.Która konfiguracja jest bardziej wydajna? Kolba z pypy lub kolba z geowłókniną?

Jednak nie są ze sobą kompatybilne.

Zastanawiam których konfiguracja jest bardziej wydajny (pod względem szybkości/wydajności):

  • wbudowanego serwera Kolba uruchomionych na pypy

lub:

  • The serwer gevent, działający pod CPython
+2

Co z testowaniem porównawczym dla zadania, które jest dla Ciebie istotne? Nie widzę, żeby to mogło być konstruktywne. – delnan

+0

To jest pytanie specyficzne i ma 3 potencjalne odpowiedzi: 1. flask-pypy jest oczywiście szybszy 2. folia-gevent jest oczywiście szybsza 3. są blisko i/lub trudno jest powiedzieć bez benchmarków. – hasen

Odpowiedz

2

Wbudowany serwer kolb to BaseHTTPServer lub tak, nigdy go nie używaj. Najlepszym scenariuszem jest prawdopodobnie tornado + pypy lub coś w tym stylu. Benchmark przed użyciem. Zależy to również całkiem drastycznie od tego, co robisz. Testy porównawcze do serwera sieciowego i sieci Web są zazwyczaj światowym rodzajem testów porównawczych. Czy twoja aplikacja naprawdę to lubię?

Cheers, Fijał

+5

Kto kiedykolwiek zamknął to pytanie, nie robił tego poprawnie! Właśnie przeczytałem, że konkretna biblioteka jest 10x szybsza w 'PyPy' niż w' CPython' .. a z drugiej strony I * do * uruchamia aplikację Flask z 'gevent'. Dlatego spojrzałem i natknąłem się na to ** bardzo interesujące pytanie, ale najwyraźniej niektórzy ludzie lubią markować kilka pytań jako * destrukcyjne * .. byłoby naprawdę miłe, gdyby jakiś facet tam miał doświadczenie w * obu *. Dlaczego więc należy przestać udostępniać te doświadczenia? .. – hsk81

13

Odpowiedź jest krótka: To szybciej z pypy i ma wyższą współbieżność z gevent.

Możliwe jest jednoczesne używanie gevent i PyPy (robimy to w PubNub dla wielu projektów), chociaż może to być trudne. Zaczynając od PyPy 2.2, kilka łatek jest wymaganych do geventu w implementacji ich gniazd. Mamy do dyspozycji gałąź eksperymentalną na github: https://github.com/pubnub/gevent/tree/pypy-hacks - Do użycia w połączeniu z pypycore.

Nasza rekomendacja? Użyj kolby z PyPy i gevent. Zdobądź to, co najlepsze z obu światów!

+0

Spójrz na [tutaj] (https://github.com/gevent/gevent/issues/248). Gevent obsługuje teraz pypy. –

+0

@ kawing-chiu Tak. Obsługa PyPy jest dostępna w bieżących wersjach beta 1.1. Zachowanie ostrożności jest nadal zalecane. Beta nadal otrzymują poprawki błędów. Po prostu obserwuj dziennik zatwierdzeń, aby zobaczyć, czy są jakieś zmiany, które mogą mieć wpływ na Twoje aplikacje od ostatniej wersji beta. –

0

Pypy jest kompatybilny z Gevent +1.1 (http://www.gevent.org/changelog.html). Jest również kompatybilny z Pythonem 3. Dlaczego więc nie używać obu? Pypy poprawi wydajność przetwarzania, podczas gdy Gevent pomoże w zadaniach związanych z IO (na przykład zapytaniami do bazy danych, żądaniami sieciowymi) za pomocą podziemnych połączeń asynchronicznych.