Frage

In interpretierte Sprachen wie PHP und JavaScript, was sind die Auswirkungen der mit einer Objekt-Orientierten Ansatz über einen Prozeduralen Ansatz?

Speziell, was ich Suche, ist eine Checkliste der Dinge, die bei der Erstellung einer web-Anwendung und die Wahl zwischen Prozeduralen und Objekt-Orientierten Ansätzen zu optimieren, nicht nur für Geschwindigkeit, sondern die Wartbarkeit als gut.Zitiert Forschungs-und test Fällen wäre auch hilfreich, wenn Sie wissen, jeder Artikel, die mit der Erkundung dieses weiter.

Bottom line:wie groß (wenn überhaupt) ist der performance-hit wirklich, wenn man mit OO vs.Verfahrenstechnische in eine interpretierte Sprache?

War es hilfreich?

Lösung

Vielleicht bin ich verrückt, aber sich Gedanken über Geschwindigkeit in Fällen wie diesem über eine interpretierende Sprache ist wie der Versuch, herauszufinden, was Farbe zu malen, die Schuppen.Lassen Sie uns nicht einmal auf die Idee, dass diese Art der Optimierung ist vollständig pre-Reife.

Du triffst den Nagel auf den Kopf, wenn Sie sagten, 'die Wartbarkeit'.Ich würde den Ansatz wählen, der zu den produktivsten und am meisten wartbar.Wenn du Geschwindigkeit brauchst später, es ain ' T gonna come von einem Wechsel zwischen prozedurale vs. objektorientierte Programmierung Paradigmen innerhalb einer interpretierten Sprache.

Andere Tipps

Leider habe ich meine tests auch.Ich habe testen Sie die Geschwindigkeit, und es ist ungefähr das gleiche, aber bei der überprüfung der Speicherauslastung immer memory_get_usage() in PHP, ich sah eine überwiegend größere Anzahl auf die OOP-Seite.

116,576 bytes für OOP zu 18,856 bytes für das Verfahren.Ich weiß, "die Hardware ist Billig", aber komm schon!1,000% Anstieg in der Nutzung?Sorry, das ist nicht optimal.Und dass so viele Nutzer auf Ihre website auf einmal, ich bin sicher, dass Sie Ihre RAM würde nur brennen, oder führen Sie aus.Bin ich falsch?

Bottom line:Nein, da der Aufwand der interpretation überwältigt den overhead von Versand Methode.

In meiner Erfahrung, eine Website, die unter der schweren Last wird festgefahren und reagiert nicht mehr viel mehr einfach mit OOP-code als prozedurale.Der Grund dafür ist leicht zu verstehen.

OOP erfordert viel mehr Speicherzuweisung (MALLOC) und viel mehr Operationen ausführen, die im Speicher als prozeduraler code.Es erfordert viel mehr CPU-Zeit, Ihre Aufgaben zu erfüllen.Es ist im wesentlichen 'overhead', wickelte sich um prozeduralen code, hinzufügen, um die CPU-Last auszuführen, vor allem, wenn performing database operations.

Viele Programmierer mögen die Bequemlichkeit von OOP, erstellen von kleinen schwarzen Kästchen versteckt hinter einfachen Schnittstellen.Aber ich wurde gut bezahlt zu beleben-Websites, die dauert eine Ewigkeit, um zu reagieren under heavy user load.Strippen aus der OOP und ersetzen es mit einfachen verfahrenstechnischen Funktionen machte einen großen Unterschied.

Wenn Sie nicht erwarten, dass Ihre Website sehr beschäftigt zu sein, durch alle bedeutet, dass die Verwendung von OOP.Wenn Sie eine high-traffic-system, werden Sie wollen, um Streifen jeden CPU-Zyklus von der Verarbeitung und jedes byte aus dem Ausgang, dass Sie können.

Wenn Sie eine interpretierte Sprache, der Unterschied ist irrelevant.Sollten Sie nicht werden mit eine interpretierte Sprache, wenn Leistung ein Problem ist.Beide führen über die gleichen.

Ihre performance zeichnet sich durch die Umsetzung, nicht die Sprache.Sie könnte verwenden Sie die langsamste Sprache und könnte es skalieren, um die größte Website der Welt wie lange, wie Sie das design zu skalieren.

Denken Sie daran, die erste Regel der optimiztion.

Nicht.

:)

Ich habe es tatsächlich getan, einen kleinen test, wie dies in python auf einer website, die ich pflegen und fand, dass Sie fast gleich in der Geschwindigkeit, mit der prozedurale Ansatz zu gewinnen, indem man so etwas wie zehn-Tausendstel einer Sekunde, aber die OO-code wurde so deutlich sauberere ich nicht weiter ist die übung nicht länger als eine iteration.

Also wirklich, es spielt keine Rolle, (meine Erfahrung jedenfalls).

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