coder::by(♥); // blog

by Markus Tacker, a CTO from Offenbach, Germany.

The Great Web Framework Shootout: Bottle vs. Silex

Frameworks zu vergleichen ist immer eine schlechte Idee, zu viele Faktoren spielen bei der Wahl eines Frameworks eine Rolle, als dass man sich rein auf quantitative Aussagen wie Anfragen pro Sekunde, Zeilen Quellcode oder die geschlossenen Bugs pro Monat verlassen darf.

Trotzdem ist sind diese Vergleiche immer wieder faszinierend. Gestern bin ich über The Great Web Framework Shootout gestolpert. Bei diesem Test werden mit Frameworks drei einfache „Hello World!“-Seiten umgesetzt: einmal als statische Antwort, einmal mithilfe einer Template-Engine und einmal mit Daten aus einer kleinen SQLite-Datenbank. Gemessen wird die jeweilige Antwortzeit der Frameworks bei diesen drei Seiten.

Was mich bei den dort gezeigten Zahlen extrem stutzig gemacht hat, war das miserable Abschneiden der PHP-Frameworks und besonders von Symfony2, obwohl der Tester darauf geachtet hat, APC zu aktivieren. Um diese Zahlen zu verifizieren habe ich einen eigenen Test mit Silex (dem kleinen Bruder von Symfony2) aufgesetzt. Den Quellcode dazu findet sich in diesem Pull-Request. Da ich inzwischen auch ein großer Fan von Python bin und sich zudem noch die Philosophie von Bottle und Silex sehr ähneln, habe ich dieses Framework zum Vergleich genommen. Beide Frameworks sind als Virtual Host konfiguriert, und werden mit Apache Bench ab -n 10000 -c 10 aufgerufen. Die Ergebnisse sprechen für sich. Mit Templating-Engine und Datenbank-Zugriff liefert Bottle 16.632 Anfragen pro Sekunde aus, Silex lediglich 378.

Micro bedeutet also nicht immer hohe Geschwindigkeit.