Speed-Vergleiche - Procedural vs. OO in interpretierten Sprachen

stimmen
17

Im interpretierten Programmiersprachen wie PHP und JavaScript, was sind die Auswirkungen des mit einem objektorientierten Ansatz über einen prozeduralen Ansatz geht?

Insbesondere, was ich suche ist eine Checkliste der Dinge zu berücksichtigen, wenn eine Web-Anwendung und die Wahl zwischen verfahrens- und Objektorientierte Ansätzen zu schaffen, optimieren nicht nur für die Geschwindigkeit, sondern auch die Wartbarkeit. Zitiert Forschungs- und Testfälle wäre auch hilfreich, wenn Sie von irgendwelchen Artikeln wissen dies weiter zu erforschen.

Unterm Strich: Wie groß (falls vorhanden) wird die Leistung wirklich genau, wenn sie mit OO vs. Procedural in einer interpretierten Sprache gehen?

Veröffentlicht am 06/08/2008 um 04:34
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
17

Vielleicht bin ich verrückt, aber Sorgen über die Geschwindigkeit in Fällen wie diesem eine interpretierende Sprache verwendet, ist wie zu versuchen, herauszufinden, welche Farbe den Schuppen zu malen. Lassen Sie uns nicht einmal in die Idee kommen, dass diese Art der Optimierung völlig verfrühte ist.

Sie treffen den Nagel auf den Kopf, wenn Sie sagte ‚Wartbarkeit‘. Ich würde den Ansatz wählen, die am produktivsten und wartbar ist. Wenn Sie später benötigen zu beschleunigen, ist es nicht gonna kommt aus im Vergleich zu objektorientierten Codierparadigmen innerhalb einer interpretierten Sprache zwischen Verfahren wechseln.

Beantwortet am 06/08/2008 um 04:36
quelle vom benutzer

stimmen
10

Leider habe ich auch meine Tests gemacht. Ich habe Testgeschwindigkeit, und es geht um die gleichen, aber wenn für die Speichernutzung immer memory_get_usage () in PHP zu testen, ich sah eine überwältigend größere Zahl auf der OOP Seite.

116.576 Bytes für verfahren zu 18.856 Bytes OOP. Ich weiß, „Hardware ist billig“, aber komm schon! 1.000% Anstieg der Nutzung? Sorry, das ist nicht optimal. Und mit so vielen Nutzern Ihre Website auf einmal schlagen, ich bin sicher, dass Ihr RAM würde nur zu verbrennen, oder auslaufen. Liege ich falsch?

Beantwortet am 22/07/2011 um 22:28
quelle vom benutzer

stimmen
5

Fazit: nein, da der Aufwand der Interpretation überwältigt den Aufwand der Methode Disposition.

Beantwortet am 06/08/2008 um 04:35
quelle vom benutzer

stimmen
2

Wenn Sie eine interpretierte Sprache verwenden, ist der Unterschied nicht relevant. Sie sollten nicht eine interpretierte Sprache verwenden, wenn die Leistung ist ein Problem. Beide werden über das gleiche ausführen.

Beantwortet am 06/08/2008 um 04:49
quelle vom benutzer

stimmen
1

Meiner Erfahrung nach wird eine Website unter hohen Last stecken bleiben und als Verfahren mit OOP Code nicht mehr reagiert viel leichter worden. Der Grund dafür ist leicht zu verstehen.

OOP erfordert viel mehr Speicherzuordnungen (MALLOC) und viel mehr Operationen im Speicher als prozeduralen Code auszuführen. Es erfordert viel mehr CPU-Zeit seine Aufgaben zu erfüllen. Es ist im Wesentlichen ‚Overhead‘, um prozeduralen Code gewickelt, an die CPU Last Hinzufügen, um sie auszuführen, vor allem, wenn Datenbank-Operationen.

Viele Programmierer wie die Bequemlichkeit der OOP, kleine schwarze Boxen hinter einfachen Schnittstellen versteckt zu schaffen. Allerdings habe ich bisher gut bezahlte Seiten wieder zu beleben, die für immer einnahmen unter Last schwerer Benutzer zu reagieren. Strippen der OOP und es mit einfachen Verfahrensfunktionen machte einen großen Unterschied zu ersetzen.

Wenn Sie Ihre Website nicht erwarten, sehr beschäftigt zu sein, mit allen Mitteln nutzen OOP. Wenn Sie ein High-Traffic-System bauen, werden Sie wollen aus der Verarbeitung und jedes Byte aus der Ausgabe, die Sie können jeden CPU-Zyklus strippen.

Beantwortet am 22/03/2015 um 19:31
quelle vom benutzer

stimmen
1

Ihre Leistung wird durch die Umsetzung charakterisiert werden, nicht die Sprache. Sie konnten die langsamste Sprache verwenden und es könnte die größte Website in der Welt so lange skalieren, wie Sie es Design skalieren.

Denken Sie daran, die erste Regel von Optimiztion.

Nicht.

:)

Beantwortet am 22/09/2008 um 19:18
quelle vom benutzer

stimmen
0

Ich habe tatsächlich einen kleinen Test, wie dies in Python auf einer Website getan, was ich erhalte und festgestellt, dass sie in der Geschwindigkeit fast gleichwertig sind, mit dem prozeduralen Ansatz von so etwas wie Zehntausendstelsekunden zu gewinnen, sondern dass der OO-Code war so deutlich Reiniger habe ich die Übung nicht mehr als eine Iteration nicht fortgesetzt werden.

Also wirklich, es spielt keine Rolle (nach meiner Erfahrung sowieso).

Beantwortet am 26/08/2008 um 21:01
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more