Ausführungsgeschwindigkeit vs. Scriptgröße

Hi zusammen,

mit PHP bin ich erst wirklich durch IPS in Kontakt gekommen und lerne dank Euch hier im Forum ständig dazu.

Vielleicht ist meine Frage völlig irrelevant, aber interessieren tut es mich als Informatiker schon :wink:

Dank der Sendererkennung ($_IPS[‚SENDER‘]) kann man ja fast immer alles in ein Script packen und je nach Sender entscheiden was man tut. Das lässt sich ja noch weiter spinnen und somit richtig große Scripte bauen.

Mal unabhängig von der Übersichtlichkeit und anderen "Best Practice’ - wie ist das mit der Ausführungsgeschwindigkeit?

Macht es bei PHP/IPS ehr Sinn die Scripte klein zu halten oder ist das hier bei unseren normalen „IF-THEN-ELSE“ Scripten WURSCHT :wink:

Bitte keine Grundsatz oder Glaubensdiskussion anstoßen - Danke!
Pitti!

Die Frage hab ich mir auch schon gestellt. Ich habe mir beispielsweise riesengroße Include-Scripte gebaut, wo ich einen haufen Funktionen reingeballert habe. Diese Scripte inkludiere ich fast bei allen normalen Scripten. Da kommen teilweise auch schnell mal 2000 bis 3000 Zeilen Code zusammen. Wenn Du dann mal diese großen Scripte mit kleineren bezüglich der Ausführungsgeschwindigkeit vergleichst, stellt man fest, dass sich das nur um wenige Millisekunden verändert. Somit meiner Meinung nach bei „normaler“ Rechenleistung irrelevant. Ich versuche auch immer, die Scripte durch Funktionen universal zu halten, damit ich nicht für gleichartige Dinge jeweils eigene Scripte benötige.

Zusätzlich ist der IO vom Datenträger ein Flaschenhals.
Wenn ich das richtig sehe hat Pitti einen Pi mit IPS.
Einfach mal die Kompatibilitätsfunktionen ein oder besser auschalten auf dem Pi.
Aufgrund der Größe der Datei und somit längeren Ladezeit, ist die Laufzeit aller Scripte länger.

Michael
PS: Darum sind diese Funktionen beim Pi ab Werk auch deaktiv :slight_smile:

Vielen herzlichen Dank für die nützlichen Antworten, sowas wollte ich wissen :wink:

Habe jetzt auch nochmal wegen der Kompatibilitätsfunktionen nachgelesen, war mir vorher gar nicht so bewußt gewesen.

Ist immer wieder eine Freude hier im Forum zu diskutieren/fragen :slight_smile:

Ciao
Heiko

Auf einem normalen, aktuellen PC merkst du es kaum, ob da ein paar tausend Zeilen mehr oder weniger geladen wurden. Auf dem Pi jedoch schon. Die Kompatibilitätsfunktionen sind ~5000 Zeilen lang (~110b) und fügen beim Pi 1 gerne mal 100ms bei der Ausführung hinzu. Somit ist meistens die gute Antwort: Wenn nicht unbedingt erforderlich, dann würde ich die Skripte klein halten.

paresy

Hi

zu erwähnen wären auch die ganzen Scripte oder Module welche sich per autoinclude festsetzen.
Besonders die Library oder auch das Patami Framework schaufeln da schon einiges rein.

Ich habe zwar keinen Pi, und auch keine Performanceprobleme. Aber andauernd Tonnen von unbekanntem komplexen Code laden wollte ich nicht. Library und Module sind weitgehend vom System verbannt.
Darum ist IPS pfeilschnell, und die autoinclude so sauber wie ein neuer Kinderpopo. Auch die Kompatibilitätsfunktionen sind aus. :cool:

greez
bb

Hi zusammen,

Performanceprobleme habe ich auch nicht, jedenfalls ist mir nicht wirklich was aufgefallen.
Bin halt nur nicht sehr vertraut mit den php-Themen im „Hintergrund“.

Die Überlegung kam eigentlich von einem sehr großen Script, welches initial einmal laufen gelassen wird und dann viele Dinge erzeugt (Variablen Profile usw.) und dann wird das nie mehr benutzt. Löschen wollte ich es dann aber auch nicht, falls man - warum auch immer - es nochmal neu braucht. Meine Annahme ist ja, das der Interpreter trotzdem alles verarbeiten muss auch wenn der Code nicht ausgeführt wird. Aber das ist dann wohl schon eine tiefere Betrachtung.

Für mich passt dass jetzt soweit - alles gut :wink:

Danke & Ciao
Heiko

Wenn das Script nie aufgerufen oder irgendwo eingebunden wird, frisst es kein Brot.
Sobald es jedoch irgendwo in einem laufenden Script geladen wird, kostet es jedesmal Rechenleistung und Disk-IO.
Egal ob eine Funktion aus dem Script ausgeführt wird oder nicht. Wie du richtig erkannt hast, der Interpreter muss es dann immer verarbeiten.
Michael