Christoph Zurnieden: Grundlagen

Beitrag lesen

Hi,

Ich bin Dir in dem Sinne um jeden Ausreißer dankbar, der sich reproduzieren läßt - allerdings mit dem Zusatz PHP als gemeinsame Basis.

Ahso. Und wofür schlepp' ich die ganzen sauschweren Schwarten mit den Prozessoropcodes aus dem Keller? ;-)

Wie kontrolliert war die Umgebung (Load des Systems)?
Das System steht alleine, Zugriffe fanden nicht statt.

Ich habe hier eigentlich etwas Statistik erwartet. Ist aber nicht weiter schlimm.

Was für eine Umgebung?

Der obere Test wurde auf einer SuSe 9.1 i586 - Kernel 2.6.5-7.111.19-default auf einem AMD 1200 veranstaltet.

Ist das der SuSE oder der Vanila-Kernel?

Der Prozess wurde mit env -i gestartet. Weitere laufende Prozesse:

USER        PID ACCESS COMMAND
/                    root          1 .rc..  init

[...]

root       2218 .r...  bash

Na, na, na! ;-)

Hallo? Was glaubst Du warum ich das Ferne vor Deiner Diskusion gesucht habe? Weil ich mich durch Theoretisches abgekanzelt fühle.

Achso, dann sag' das doch! Kann ich doch nicht riechen!
Da ich Code verlangte ist das zwar eigentlich fast schon  automatisch nicht mehr theoretisch, aber ohne eine gewisse Mindestmenge Theorie geht's leider gar nicht. Dazu gehört bei Optimierungsversuchen natürlich Komplexitätstheorie. Das hört sich alles doll an, sieht ehrfurchtsgebietend aus, aber es hört sich wirklich nur so an und sieht auch tatsächlich nur so aus.
Die berüchtigte O-Notation wird gerne als Überblick benutzt und bedeutet extrem simplifiziert (Alle Infor-, Mathe- und andere -matiker mal eben weggehört! ;-):
'n'  => Anzahle der beteiligten Daten
O(1) => um zum Ergebnis zu kommen reicht eine Operation, egal wieviele Daten beteiligt sind => einmal.
O(n) => für jedes einzelne beteiligte Datum wird auch eine Operation benötigt, um zum Ergebniss zu kommen => n-mal
0(n^2) = Jedes Datum muß genau so oft angefaßt werden, wie es Daten gibt => (n*n)-mal
...
Es entwickelt sich also exponentiell und bezieht sich immer auf die Menge der Daten. Deswegen bringen Optimierungen dann am meisten, wenn sie es schaffen so wenig Daten so selten wie möglich anzufassen, um zum Ergebniss zu kommen.
Es ist also schön für Dich, das eine Berechnung eines Datums schneller ist, als eine andere, aber _gar keine_ Berechnung ist nunmal unschlagbar schneller, oder?

"Laufzeit-Optimierung" ist also die Suche nach einem besserem Algorithmus, nicht nach dem einem oder anderem einsparbaren Prozessorzyklus.

Der Vergleich zweier Integer anscheinend schneller zu sein.

Gibt es auch die dafür nötigen Angaben, damit man das nachvollziehen kann? Zumindest ein kleines Stückchen Code?

for($i=0;$i<count($a);$i++)

gegen

for($i=0;$i<1536;$i++)

Ah, d'rum.
Falls im erstem Fall mit $a innerhalb der Schleife nichts gemacht wird, ist das count($a) recht sinnlos. Allerdings sollte das dann der Compiler/Interpreter gut wegoptimieren können (Im zweitem Fall passiert das ja wohl auch). Macht das die heutige Version nicht, macht's die morgige, Fummeleien sind da recht zweckfrei, solche Kinkerlitzchen solte man dem Compiler überlassen, der kennt sich da meist besser aus.

Es bleibt wie gehabt, Querschläger nehme ich sehr gerne zur Kenntnis, um meine Basis wieder zu verbreitern.

Vergiß es gleich wieder, denn das hat keine großen sittlichen Nährwert, wenn Du mit der Sprache nur etwas programmieren willst und nicht an der Sprache/Interpreter/Compiler selber Veränderungen vornehmen möchtest.

so short

Christoph Zurnieden