/ / Leistungsunterschiede zwischen Python aus Paket und Python, zusammengestellt aus Quelle - Python, Django, Leistung, Apache, Redhat

Leistungsunterschiede zwischen Python aus Paket und Python aus Quellen kompiliert - Python, Django, Performance, Apache, Redhat

Ich würde gerne wissen, ob es dokumentiert istLeistungsunterschiede zwischen einem Python-Interpreter, den ich mit einem RPM (oder mithilfe von Yum) installieren kann, und einem Python-Interpreter, der aus Quellen kompiliert wird (mit a priori gut gesetzten Flags für Kompilierungen).

Ich benutze einen Redhat 6.3 Maschine als Django / Apache / Mod_WSGI-Produktionsserver. Ich habe bereits alles in verschiedenen Setups und in unterschiedlicher Reihenfolge richtig zusammengestellt. Ich behalte jedoch in der Regel die Abhängigkeiten von Build-Dev auf einem solchen Computer. Aus verschiedenen Gründen, die mit dem Ich zusammenhängen (und mehr oder weniger praktisch), möchte ich Python-2.7.3 verwenden. Redhat wird standardmäßig mit Python-2.6.6 geliefert. Ich glaube, ich könnte damit weitermachen, aber es würde mich irgendwie verletzen (ich müsste ein paar Bibliotheken und mein Ego ersetzen und einen Ersatz finden).

Abgesehen von meinem Ego und meinen Abhängigkeiten würde ich gerne wissen, welche Auswirkungen dies auf die Leistung eines Django-Servers haben würde.

Antworten:

4 für die Antwort № 1

Wenn Sie mit den exakt gleichen Flags kompilieren, die zum Kompilieren der RPM-Version verwendet wurden, erhalten Sie eine Binärdatei, die "genau so schnell ist." spec Datei.

Sie können jedoch manchmal tun besser als die vorgefertigte Version. Beispielsweise können Sie den Compiler für "Ihre allgemeine CPU" optimieren lassen, anstatt "allgemein 386 kompatibel" (oder was auch immer für den RPM optimiert wurde). Natürlich, wenn Sie nicht wissen, was Sie tun (oder es mit Absicht tun), ist es immer möglich, etwas langsamer als die vorgefertigte Version zu bauen.

Mittlerweile ist 2.7.3 in einigen Bereichen schneller als 2.6.6. Die meisten von ihnen wirken sich normalerweise nicht auf Sie aus, aber wenn, dann werden sie wahrscheinlich ein großer Gewinn sein.

Schließlich für die große Mehrheit des Python-Codes:Die Geschwindigkeit des Python-Interpreters selbst ist für Ihre allgemeine Leistung oder Skalierbarkeit nicht relevant. (Wenn dies der Fall ist, möchten Sie wahrscheinlich PyPy, Jython oder IronPython verwenden, um CPython zu ersetzen.) Dies gilt insbesondere für einen WSGI-Dienst Wenn Sie nichts langsamer machen, wird Apache wahrscheinlich der Engpass sein. Wenn du sind Wenn Sie etwas langsamer machen, ist dies wahrscheinlich etwas I / O-gebunden und liegt außerhalb der Kontrolle von Python (wie das Lesen von Dateien).

Letztendlich kann man nur wissen, wie vielDer Gewinn, den Sie bekommen, ist, wenn Sie beide Möglichkeiten und Leistungstests ausprobieren. Wenn Sie jedoch nur eine Faustregel wünschen, würde ich sagen, Sie würden eine 0% ige Steigerung erwarten, und wenn Sie Glück haben, werden Sie angenehm überrascht sein.