Frage

I build-Datenbank-gestützte Web-Sites. Früher habe ich verwendet, Perl oder PHP mit MySQL.

Jetzt fange ich ein großes neues Projekt, und ich möchte es in der Art und Weise zu tun, die in dem am schnellsten reagierenden möglichen Standort führen werden.

Ich habe hier schon mehrere Seiten zu sehen, wo die Frage, wie PHP zu optimieren mit verschiedenen Versionen von kritisiert „es nicht wert ist, zu optimieren PHP auf große Längen gehen, da es eine interpretierte Sprache ist, und es wird nicht so viel Unterschied machen.“

Ich habe auch verschiedene Diskussionen (especiallon auf dem SO Podcast) über die Vorteile von zusammengestellt vs. interpretierte Sprachen , und es scheint, als ob es sein würde, in meinem Interesse zu verwenden, um eine kompilierte Sprache zu hören dient den Standort statt einer interpretierten Sprache.

Ist dies überhaupt möglich in einem Web-Kontext? Wenn ja, was eine vernünftige Sprache Wahl wäre?

Neben Geschwindigkeit ein Vorteil, den ich forsee ist die Möglichkeit von Suche nach Fehlern bei der Kompilierung , anstatt die Website debuggen müssen. Ist das vernünftig zu erwarten?

War es hilfreich?

Lösung

Was Sie tun können, ist, was mehrere Schwer frequentierte Websites tun (wie Facebook oder Twitter), auch bekannt als schreiben Sie Ihre algorythm in einer C-Plugin "CPU raubend".

Zum Beispiel könnten Sie eine PHP-Erweiterung schreiben, wenn Sie planen, PHP zu verwenden, oder einen Ruby-Erweiterung wenn Sie planen, Rubin / Ruby on Rails zu verwenden, etc.

Auf diese Weise können Sie Ihre Stromlinien Code einfach zu halten und leicht zu pflegen (könnte es viel schwieriger zu handhaben Anfrag von C anstatt von PHP), während einem starken und soliden Hintergrund Kern (weil es kompiliert, und der Compiler sagt Ihnen, was die Probleme bei der Kompilierung sind)

Andere Tipps

Wenn Sie eine neue Sprache bauen wollten ... und Sie kamen mit allen der Semantik und es war vollständig, und man hatte einige magische Box, die zwischen Herstellung der Sprache kompiliert gegen interpretiert einen Schalter hatte, die kompilierte Version schneller wäre als die interpretierte Version.

Warum? Da Compilieren bringt Ihre Semantik auf eine niedrigere Ebene an der Maschine, welche Mittel es viel schneller ausgeführt kann, während Interpretieren bedeutet, dass die Semantik der Sprache wird von einigen übersetzt Sache (dh der Dolmetscher), wenn der Benutzer tatsächlich verwendet Ihre Website.

Nachdem das nun gesagt, dass ... das bedeutet nicht unbedingt, dass Ihre Website auf 100% laufen wird schneller auf einer kompilierten Sprache vs einer interpretierten Sprache. Es gibt Dolmetscher gibt, die für verschiedene Sprachen sehr schnell heute sind (das heißt PHP), und es gibt sogar Optimizern für interpretierte Sprachen, die sie noch schneller noch machen.

Es gibt viele andere Dinge, die in die Leistung Ihrer Website, die Agnostiker der Sprache sind Sie wählen. Hardware-Setup, Datenbankinstallation, Netzwerktopologie, usw. Diese Dinge können einen größeren Einfluss auf Sie haben. Ich würde vorschlagen, Messung sicher sein.

Für mich Fehler bei der Kompilierung zu finden, ist ein großes Zeitersparnis, so neige ich dazu, kompilierten Sprachen bevorzugen, die stark typisiert werden. Es läßt mich meine Arbeit schneller zu erledigen, aber das macht es nicht objektiv die beste Option. Einige Leute haben kein Problem schwach typisierte Code zu schreiben und Ausführen von Testsuiten auf, ihre Funktionalität zu überprüfen, was ich denke, würde genauso gut funktionieren würde.

IMHO ist es durchaus ein Nicht-Sinn einen komplexen Web-App zu schreiben, eine kompilierte Sprache verwendet wird, da es keine Vorteile gegenüber einer Reihe von Verwaltbarkeit Problemen gibt.

Es gibt viele Möglichkeiten, Leistungen und Skalierbarkeit in einer Skriptsprache, sowohl auf Sprachebene als auch auf Systemebene zu erheben, die kleineren Leistungen mit einer kompilierten Sprache schließlich völlig einflussreich zur Verfügung zu gewinnen sein.

Auf der anderen Seite habe ich sehr nützlich zu sein, möglich, eine agile Entwicklung und Fehlersuche Schema zu folgen, einfach den Code ändern und die Ergebnisse zu sehen.

Perl ist nicht eine interpretierte Sprache: es Bytecode kompiliert wird, so dass Sie den Preis für Interpretation zahlen nur, wenn die perl ausführbare Datei gestartet wird. Also, wenn es mit Apache verwenden, nicht verwenden CGI aber mod_perl.

Was auch immer Sie tun, ist die Entwicklungszeit geht wahrscheinlich zu weit Reaktionszeit nicht überschreiten, wenn Sie eine Sprache auswählen, die nicht geeignet, um Web-Programmierung ist oder keine gute Bibliotheken zu unterstützen, was Sie tun müssen. Z.B. Ich würde nie in C oder C ++ wählen. Sie wollen nicht eine Web-Anwendung, die mörderisch schnell ist, aber Buggy und 6 Monate zu spät.

Tomcat ist ein gemeinsamer Weg kompilierten Sprachen zu verwenden, um Webseiten zu implementieren, aber bevor Sie zu weit gehen, ernsthaft in Erwägung ziehen was Ihre Geschwindigkeit Engpässe . Es gibt ein paar Hauptquellen der Verlangsamung in Web-Anwendungen:

  1. Netzwerk-Latenzen
  2. Statische Medien, vor allem Bilder
  3. Datenbank-Abfragen
  4. Server-seitige Verarbeitung Code
  5. Client-seitige Verarbeitung Code

1 und 5 nicht wirklich viel mit dieser Frage zu tun.

2 wird relevant sein, wenn Sie viele Bilder haben, die von Seite zu Seite variieren. Wenn das der Fall ist, Client-Browser geht nicht so einen guten Job-Caching, und jede Seite-Last wird einige Zeit dauern. In diesem Fall ist es sehr wahrscheinlich, dass Ihre serverseitige Sprache wird nicht bemerkt werden, da der Aufwand aus statischen Medien dominieren wird.

3 ist wahrscheinlich ein größerer Faktor als 4 für eine Vielzahl von Anwendungen. Wenn Sie nur sehr wenige Daten haben, aber Sie tun eine ganze Menge Verarbeitung, kann 4 dominieren, aber ansonsten wird 3 dominieren, auch wenn Sie eine interpretierte Sprache verwenden.

können Menschen fragen: "Warum optimize php?" weil die 2 und 3 sind oft wichtiger sowieso. Oft ein guter Datenbank-Caching Framework besser sein wird (und einfacher) Optimierung.

Es gibt viele Teile, die in einer Web-Anwendung geht. Die Zeit von der Anwendungsschicht genommen muss nicht groß sein. Für eine typische Anwendung wäre die größten Schweine in den Webserver und in der Datenbank. Ersetzen PHP mit einem binären cgi wird dies nicht ändern würde.

Darüber hinaus, während die interpretierten Teile PHP etwas langsam sein kann, das ist nur ein kleiner Teil dessen, was geht auf in der Ausführung eines PHP-Skript. Alle Funktionen, die als Teil der Sprache zur Verfügung gestellt werden, sind in nativen Code implementiert. Zum Beispiel, wenn Sie eine Funktion wie preg_match nennen, wird es eine native Code-Bibliothek rufen und lassen Sie es seine Arbeit tun. Dies bedeutet, dass es weniger eigentliche Interpretation los, als Sie vielleicht denken.

Es kann einige Fälle, in denen eine andere Sprache als PHP könnte sich lohnen, aber das sind Sonderfälle. Im Allgemeinen gibt es hier nichts zu gewinnen.

Die Latenz des Netzwerks ist bei weitem der größte bestimmende Faktor in dieser Argumentation. In der Tat ist die Netzwerklatenz so viel von einem Faktor, dass es der Sprache Überlegungen eher unwichtig aus einem Performance-Problem macht. Also ... gehen mit dem, was Sie wissen. Verwenden Sie die Sprache, die Sie am bequemsten und produktivste mit und andere Überlegungen ausgearbeitet werden können, wie Sie gehen entlang. Nun, sagte, dass es immer Spaß, neue Sachen zu versuchen und neue Dinge zu lernen kann eine Obsession werden, so dass, wenn das Projekt ein persönliches ist, dass Sie die Möglichkeit, Experiment erlaubt, gut, mit allen Mitteln .....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top