Am Ende alles nach unten kommt Cache Handhabung ...
zu korrigieren
symfony oder PHP in der Regel langsamer als andere Sprachen oder Frameworks damit Sie mit den Tools, die reich, sicher und prüfbar Web erstellen Anwendungen sehr schnell.
Wenn Sie einen Reverse-Proxy wie Varnish und ESI (Randseite enthält) und die Teile Ihrer Vorlagen dienen Sie am Ende wirklich durch symfony aktualisiert haben müssen. Sie werden eine unglaublich schnelle Erfahrung haben.
Außerdem, wenn Sie einen Opcode Cache wie APC verwenden und eine optimierte Datenbank ein menschlicher Benutzer wird nicht wirklich den Unterschied von wenigen ms in einer realen Welt Anwendung bemerken.
Auf Wunsch werde ich ein wenig tiefer tauchen und Ihnen ein paar weitere Dinge zum Nachdenken geben.
[Caching & Leistung]
Mit Cloud-Services (S3, EC2, gae, ...) bei fast ohne Kosten mit Last-Balancern gepaart, einfache Bereitstellung (Koch, Marionette, ...) und all diese funkigen Sachen verfügbar sind, ist es selbst für kleine Firmen leicht und erschwinglich geworden, große Daten und/oder Anwendungen mit hohem Datenverkehr zu verwalten.
Mehr Speicherplatz bedeutet mehr Platz für den Cache - mehr Rechenleistung bedeutet schnelleres Cache-Warmimg.
Dinge, die Sie oft hören, wenn die Leute über PHP oder Rahmen-Performance sprechen:
- facebook läuft mit PHP
- youp ** n wurde mit symfony
- ...
entwickelt
Warum also diese Websites nicht vollständig zusammenbrechen? Weil ihre Caching-Routinen clever sind.
Wussten Sie zum Beispiel, was Facebook tut, wenn Sie ein Statusupdate schreiben?
Es speichert es nicht direkt in einer Datenbanktabelle mit all Ihren Statusaktualisierungen und wenn ein Freund seinen Stream besucht, werden alle Status seines gesamten Freundes aus der Datenbank abgerufen, bevor er bedient wird.
Facebook schreibt Ihren Status an alle Nachrichtenströme Ihrer Freunde und beginnt, ihren Cache zu erwärmen.
jetzt werden alle Streams für das Servieren vorbereitet und wann auch immer einer deiner Freunde seinen Stream besucht, wird ihm eine im Cache gespeicherte Version geliefert ... sofort mit fast keiner Codeausführung.
Der Stream zeigt nur den neu erstellten Status an, wenn der Cache warmimg beendet wurde. wir sprechen über ms hier ...
Was sagt uns das? In modernen hochfrequentierten Anwendungen wird fast alles aus dem Cache bedient und der Benutzer wird nicht bemerken, wenn die tatsächliche Berechnung der Seite 1 ms oder 5 Sekunden dauert.
In einem "realen" Szenario wird der Endbenutzer keinen Unterschied zwischen den Frameworks in req/sec bemerken.
Auch mit einfachen Sachen wie Mikro-Caching können Sie Ihren vps gehosteten Blog nicht sofort nach unten gehen lassen, sobald Sie es auf der Zielseite von hackernews gemacht haben.
Am Ende ist das wichtigere Ding ... stellt mein Rahmen die Werkzeuge, die Dokumentation und die Tutorien und die Beispiele zur Verfügung ..., um dieses Ganze schnell zu erhalten & einfach. symfony macht das für mich!
Wenn du feststeckst ... wie viele Leute sind da und wollen deine Fragen zur Leistung beantworten? Wie viele reale Anwendungen wurden oder werden in naher Zukunft mit diesem Framework erstellt?
Sie wählen eine Community, indem Sie ein Framework auswählen!
... okay, das ist für die ist es ein Teil Rolle ... nun zurück zu diesen Benchmarks :)
[Benchmarks & Setups]
Über all die glänzenden Farben und Phantasie Englisch: www.doc-o-matic.com/webhelp/SC_Insou...pageType.html Im Benchmark kann man leicht übersehen, dass nur ein Setup (Webserver, Datenbank, ...) mit jedem dieser Frameworks getestet wird, während Sie für jede von ihnen eine Vielzahl von Konfigurationen haben können.
Beispiel: Anstelle von symfony2 + doctrineORM + mysql können Sie auch symfony + documentODM + MongoDB verwenden.
MySQL ... MongoDB ... Relationale Datenbanken ... NoSQL-Datenbanken ... ORM ... Mikro-ORMs ... Raw SQL ... alle in diesen Konfigurationen verwechselt ------> Äpfel und Orangen.
[Benchmarks & Optimierung]
Ein häufiges Problem bei fast allen Benchmarks - auch solche, die nur PHP-Frameworks zu vergleichen - rund um die Web gefunden und auch diese "TechEmpower Web Framework Benchmarks" ist ungleiche Optimierung.
Diese Benchmarks nutzen keine möglichen (und von erfahrenen Entwicklern wohlbekannten) Optimierungen dieser Frameworks ... zumindest für symfony2 und deren Tests ist dies eine Tatsache.
Einige Beispiele in Bezug auf die Symfony2 Setup in ihrer neuesten Tests verwendet:
- "Komponist installieren" nicht mit der Option -o dump eine optimierte classmap Autoloader (code)
- Symfony2 genannt wird, wird verwenden APC-Cache nicht zu Lehre Metadaten Anmerkungen ohne apc_cli = 1 (issue)
- der gesamte Behälter DI in der Steuerung eingespritzt wird, statt nur die wenigen erforderlichen Dienste
- hiermit setter inj ection verwendet wird -> Objekt erstellt dann setContainer() -Methode aufrufen, anstatt den Behälter direkt in den Konstruktor Injektion (siehe: BenchController erstreckt Controller erstreckt ContainerAware)
- einen Alias ($ this-> get ('service_name')) wird verwendet, um Dienste aus dem Container abzurufen, anstatt direkt darauf zuzugreifen ($ this-> container-> get ('service_name')). (code)
- ...
die Liste geht weiter ... aber ich denke, Sie verstehen, wo dies führt, ist. 90 open issues jetzt ... eine endlose Geschichte.
[Entwicklung & Ressources]
Ressources wie Server und Speicher sind billig. Wirklich billig ... im Vergleich zur Entwicklungszeit.
Ich bin ein Freiberufler, der erheblich gemeinsame Preise berechnet. Sie können entweder 2-3 Tage meiner Zeit bekommen ... oder eine Menge Rechenleistung und Speicherplatz!
Bei der Auswahl eines Frameworks wählen Sie auch ein Toolkit für die schnelle Entwicklung - eine Waffe für Ihren Kampf gegen den nie ganz zufriedenen, merkmalkriechenden Kunden ... der Sie für seine Wünsche gut bezahlen wird.
Als Agentur (oder Freelancer) möchten Sie funktionsreiche Anwendungen in kurzer Zeit erstellen. Sie werden auf Punkte stoßen, an denen Sie mit etwas hängen bleiben ... vielleicht ein Performance-Problem. Sie stehen aber auch Entwicklungskosten und Zeit gegenüber.
Was wird teurer? Ein zusätzlicher Server oder ein zusätzlicher Entwickler?
Ich finde es merkwürdig, dass das Zend-Framework als Teil ihres Tests nicht enthalten war, obwohl einige interessante Ergebnisse ansonsten. –