Hi,
Mir ist die Geschwindigkeit da mehr im Vordergrund.
Warum? Sollte das Programm nicht erstmal funktionieren?Diese Philisophie sehen wir alle hier jeden Tag mit irgendwelchen Code, der zum Teil nicht mal von den Einzelnen nachvollzogen werden kann. Genaugenommen habe ich mal eben auch schnell was zusammengezimmert, wo mir Tom in https://forum.selfhtml.org/?t=98391&m=599837 und https://forum.selfhtml.org/?t=98391&m=599930 die Zähne gezogen hat; und das völlig zu recht. Dieses "erstmal funktionieren" ist nach meinem Geschmack keines Falls das, was man braucht.
Ich dachte eigentlich, das es genau das ist, was man braucht, denn die Alternative wäre "funktioniert erstmal nicht", denn entweder klappt es oder nicht; ein bischen schwanger gibt es nicht.
Ja Christoph, viele Wege führen nach Rom. In diesem Sinne finde ich Deinen Vergleich der Schwangerschaft unpassend, denn funktionieren werden viele Wege. Aber beim Beispiel bleibend scheint es Schwangerschaften zu geben die länger als neun Monate brauchen; oder anders ausgedrück: Manch eine Reise hat die Stationen Paris - Erkner - Rom ;)
Allgemein ist mir Deine Denkweise zu schroff und der vermutete -Beweis durch Kontraposition- dem Verständnis, was gemeint ist, nicht zuträglich. Mir geht es nicht um das direkte Gegenteil von "[erstmal ]funktionieren" zu "[erstmal ]nicht funktionieren" hin, sondern nur um das Wie mit der Grundlage "funktionieren". Wenn Du so willst: "funktioniert" <> "funktioniert bestmöglich"
[... "finite Zeit" ...] Wenn dann noch der letzte Fitz fehlen sollte, dann kannst Du nachschauen, wo's hängt, aber empfehlen würde ich da eher einen anderen Algorithmus zu suchen. Macht deutlich mehr Sinn als sich darum zu streiten, ob der minimale Overhead von PHPs syntactic sugar Karies verursacht.
Wovon reden wir hier? Davon, daß man jede Zeile funktionierenden Codes eines -erstmal funktionierenden- Projekts auseinanderprlückt, um es zu optimieren, und dies beim nächsten wieder, und beim nächsten, und... Nein - ich nicht. Ich für meinen Teil meine, wenn man verschiedene Aspekte von Anweisungen / Funktionen sich als Kenntnis zur Basis gemacht hat, wird beim Zusammenstellen eines Scripts sich eine spätere Optimierung schlichtweg erübrigen. Um es deutlich zu sagen: Es geht mir um eine Basis, die nicht der Zielsetzung "es funktioniert" hat, sondern vielmehr "es ist das Bestmögliche, was ich weiß und kann".
Genaugenommen reden wir hier also über den grundlegenden Ansatz von Programmiertechnik. Ich will jedes Sandkorn im Getriebe kennen, bevor ich ein solches zusammensetze und kann möglicherweise auf eine Aufrüstung mit PS-stärkerem Motor verzichten.
Das erarbeiten einer solchen Basis ist überaus Zeitaufwändig. Und genau da geht Dein Argument fehl: Ist die Basis da, verbraucht sie keinerlei Zeit, sondern im Gegenteil wird Zeit für nötige Optimierungen erspart.
Vor einer Überpüfung habe ich geglaubt, die neu Funktion scandir() sei eine Erleichterung. Jetzt weiß ich es besser. Vor einer Überprüfung habe ich geglaubt, mit fgets() bin ich gut bedien. Jetzt weiß ich es besser. Vor einer Überpüfung habe ich geglaubt, mit count() in einer Schleife arbeiten zu wollen. Jetzt weiß ich es besser...
Hast Du schon mal den Code von einem Vorgänger durcharbeiten sollen?
Ja. Aber was hat das hiermit zu tun?
Hast Du dann auch schon mal mit der hablen Zeit -das Selbe- erledigt?
Was wenn ein Kunde mal die Kosten für ein Gutachten nicht scheut?
Wer macht das Gutachten und vor allem: worauf hin? Doch höchstens daraufhin, das die Vorgaben nicht eingehalten wurden und ob da Sicherheitsmängel zu finden sind. Was noch?
Was war noch mal mein Anliegen? ;)
Diese Einstellung hat bei kleinen Leuten mit kleinem Budget Berechtigung.
Da schon mal überhaupt nicht. Das teuerste ist bei Softwareentwicklung Zeit und Microoptimierung frißt Zeit, die kannst Du stets anderweitig _viel_ gewinnbringender einsetzen.
Mit "Diese Einstellung hat bei kleinen Leuten mit kleinem Budget Berechtigung." stimme ich Dir zu und fange mir "Da schon mal überhaupt nicht." ein. Jetzt wird mir Deine Logik zu hoch.
Es gibt kein "extrasauberes" Coding, entweder ist das ordentlich oder schlampig.
Entweder Du widersprichst Dir hier, oder Du gibst zu, lieber schlampigen Code abzuliefern an dem man "immer noch dran rumfeilen [kann]".
Ach, Du möchtest beides? Sauberen _und_ geschwindigkeitsoptimierten Code? Das funktoniert nicht, da ist das Minimax-Gesetz gegen.
Hm, google half mir nicht weiter. Bitte gib eine Quelle an, damit ich die gleiche Grundlage habe. Ich kenne kein Minimax-Gesetz.
Du kannst nur _entweder_ sauber schreiben _oder_ geschwindigkeitsoptimiert. Beides gleichzeitig geht nicht. (Auch wenn die Formulierung "geht nicht" mir fast schon körperliche Schmerzen bereitet ;-)
Wenn Du geschwindigkeitsmäßig noch signifikant etwas rausholen kannst (z.B. O(n*log(n)) statt O(n^2)) dann war der vorherige Algorithmus einfach _falsch_ und nicht bloß lahm.
Du kannst es Dir erlauben schlampig zu werden, wenn Du _genau_ weißt, was Du tust. Dieses "genau" sollte aber vorzugsweise bis runter zu den Opcodes gehen.
Dies abzustellen bin ich Stückweise dabei.
Was abstellen?
1. Schlampig zu arbeiten
2. nicht genau zu wissen was ich tue
Das mache ich mit Grundlagenforschung, indem ich mich stückweise auch an die Sourcen von PHP herantaste.
Gruß aus Berlin!
eddi