performance programmierung Geschwindigkeitsvergleiche-Prozedurale vs. OO in interpretierten Sprachen




prozedurale programmierung vs objektorientierte (6)

Ihre Leistung wird durch die Implementierung charakterisiert, nicht durch die Sprache. Sie könnten die langsamste Sprache verwenden und es könnte die größte Website der Welt sein, solange Sie sie skalieren.

Denken Sie nur an die erste Optimierungsregel.

Tu es nicht.

:)

In interpretierten Programmiersprachen wie PHP und JavaScript, was sind die Auswirkungen eines objektorientierten Ansatzes gegenüber einem prozeduralen Ansatz?

Genau das, was ich suche, ist eine Checkliste der Dinge, die man beim Erstellen einer Webanwendung beachten muss, und zwischen prozeduralen und objektorientierten Ansätzen wählen, um nicht nur die Geschwindigkeit, sondern auch die Wartbarkeit zu optimieren. Auch zitierte Recherche- und Testfälle wären hilfreich, wenn Sie von Artikeln wissen, die dies weiter untersuchen.

Fazit: Wie groß (wenn überhaupt) ist der Performance-Hit wirklich, wenn man in einer interpretierten Sprache mit OO vs.


Wenn Sie eine interpretierte Sprache verwenden, ist der Unterschied irrelevant. Sie sollten keine interpretierte Sprache verwenden, wenn Leistung ein Problem ist. Beide werden ungefähr das Gleiche leisten.


Nach meiner Erfahrung wird eine Website unter hoher Last verzetteln und mit OOP-Code viel einfacher als prozedural reagieren. Der Grund ist leicht zu verstehen.

OOP erfordert viel mehr Speicherzuweisungen (MALLOC) und viel mehr Operationen, um im Speicher ausgeführt zu werden als prozeduraler Code. Es erfordert viel mehr CPU-Zeit, um seine Aufgaben auszuführen. Es ist im Wesentlichen "Overhead", um den prozeduralen Code herumgepackt und trägt zur CPU-Last bei, um ihn auszuführen, besonders wenn Datenbankoperationen durchgeführt werden.

Viele Programmierer mögen die Bequemlichkeit von OOP, indem sie kleine schwarze Kästchen hinter einfachen Schnittstellen verbergen. Jedoch wurde ich gut bezahlt, um Websites wiederzubeleben, die ewig dauerten, um unter hoher Benutzerlast zu reagieren. Das OOP herauszunehmen und es durch einfache Verfahrensfunktionen zu ersetzen, machte einen großen Unterschied.

Wenn Sie nicht erwarten, dass Ihre Website sehr beschäftigt ist, verwenden Sie unbedingt OOP. Wenn Sie ein System mit hohem Datenverkehr aufbauen, sollten Sie jeden CPU-Zyklus von der Verarbeitung und jedes Byte von der Ausgabe trennen, die Sie haben.


Vielleicht bin ich verrückt, aber in solchen Fällen, in denen ich eine interpretative Sprache verwende, ist es mir egal, wie schnell ich mich bemühe, herauszufinden, welche Farbe der Schuppen hat. Lassen Sie uns nicht einmal in die Idee kommen, dass diese Art der Optimierung vollständig vorgereift ist.

Sie haben den Nagel auf den Kopf getroffen, als Sie "Wartbarkeit" sagten. Ich würde den Ansatz wählen, der am produktivsten und wartungsfreundlichsten ist. Wenn Sie später eine höhere Geschwindigkeit benötigen, wird es nicht durch den Wechsel zwischen prozeduralen und objektorientierten Programmierparadigmen innerhalb einer interpretierten Sprache kommen.


Fazit: Nein, weil der Overhead der Interpretation den Overhead des Methoden-Dispatchings übersteigt.


Leider habe ich auch meine Tests gemacht. Ich habe die Geschwindigkeit getestet, und es ist ungefähr das Gleiche, aber als ich testete, wie memory_get_usage () in PHP verwendet wurde, sah ich eine überwältigend große Anzahl auf der OOP-Seite.

116.576 Bytes für OOP bis 18.856 Bytes für prozedurale. Ich weiß "Hardware ist billig", aber komm schon! 1.000% Mehrverbrauch? Entschuldigung, das ist nicht optimal. Und wenn so viele Benutzer gleichzeitig auf Ihre Website kommen, bin ich mir sicher, dass Ihr Arbeitsspeicher nur brennt oder ausläuft. Liege ich falsch?





interpreted-language