/ / Różnice w wydajności między pythonem z pakietu i pythonem skompilowanym ze źródła - python, django, wydajność, apache, redhat

Różnice w wydajności między pythonem z pakietu i pythonem skompilowanym ze źródła - python, django, wydajność, apache, redhat

Chciałbym wiedzieć, czy są jakieś udokumentowaneróżnice wydajności pomiędzy interpreterami Pythona, które mogę zainstalować z rpm (lub używając yuma) i interpretera Pythona skompilowanego ze źródeł (z a priori dobrze ustawionymi flagami dla kompilacji).

Używam Redhat 6.3 komputer jako serwer produkcyjny Django / Apache / Mod_WSGI. Już poprawnie skompilowałem wszystko w różnych konfiguracjach i różnych zamówieniach. Jednak zazwyczaj utrzymuję zależności od build-dev na takiej maszynie. Dla niektórych różnych przyczyn związanych z ego (i bardziej lub mniej praktycznych) chciałbym użyć Python-2.7.3. Domyślnie Redhat jest dostarczany z Pythonem w wersji 2.6.6. Myślę, że mógłbym z tym pójść, ale to by mnie bolało (musiałbym upuścić i znaleźć zastępstwo dla kilku bibliotek i mojego ego).

Jednak oprócz mojego ego i zależności chciałbym się dowiedzieć, jaki byłby wpływ na wydajność serwera Django.

Odpowiedzi:

4 dla odpowiedzi № 1

Jeśli kompilujesz z dokładnie tymi samymi flagami, które zostały użyte do kompilacji wersji RPM, otrzymasz plik binarny, który jest tak szybki, i możesz uzyskać te flagi, patrząc na RPM spec plik.

Jednak czasami możesz to zrobić lepszy niż wersja gotowa. Na przykład możesz pozwolić kompilatorowi zoptymalizować pod kątem konkretnego procesora, zamiast "ogólnego kompatybilnego z 386" (lub z jakimkolwiek zoptymalizowanym RPM). Oczywiście, jeśli nie wiesz, co robisz (lub robisz to celowo), zawsze możesz zbudować coś wolniejszego niż wersja gotowa.

Tymczasem 2.7.3 jest szybszy w kilku obszarach niż 2.6.6. Większość z nich zazwyczaj nie wpłynie na ciebie, ale jeśli tak, to prawdopodobnie będą dużą wygraną.

Wreszcie, dla ogromnej większości kodu Pythona,szybkość samego interpretera Pythona nie jest istotna dla ogólnej wydajności ani skalowalności. (A jeśli tak, to prawdopodobnie chcesz wypróbować PyPy, Jython lub IronPython, aby zastąpić CPython.) Jest to szczególnie prawdziwe w przypadku usługi WSGI. nie robisz nic powolnego, Apache prawdopodobnie będzie wąskim gardłem. Jeśli ty robienie czegokolwiek powolnego, to prawdopodobnie coś związanego z I / O i poza kontrolą Pythona (jak czytanie plików).

Ostatecznie, jedynym sposobem, aby dowiedzieć się, ilezysk, jaki uzyskasz, polega na testowaniu w obu kierunkach i testowaniu wydajności. Ale jeśli chcesz tylko zasady, powiedziałbym, że oczekuję 0% zysku i będę mile zaskoczony, jeśli będziesz miał szczęście.