Hi,
Wie läufts schneller.
"Optimieren" heisst erst einmal besser organisieren und nur wenn Performanceengpässe gemessen werden konnten, ist üblicherweise an eine dementsprechende Optimierung zu denken.
genau dieses Denken führt IMHO dazu, dass für viele Aufgaben auch schnelle, hochgezüchtete Maschinen oft noch als "zu langsam" oder "nicht aureichend leistungsfähig" eingestuft werden. Wäre die Faulheit vieler Programmierer nicht so ausgeprägt, käme man für viele Einsatzgebiete mit deutlich leistungsschwächeren und weniger stromhungrigen, weniger Abwärme produzierenden Maschinen aus, ohne dass dies gleich mit einer Performanceeinbuße einhergehen müsste - oder ein Rechner könnte das leisten, wofür sonst drei bis vier eingesetzt werden.
Quelltexte sind dahingehend zu optimieren, dass diese entweder direkt objektorientiert sind oder indirekt, ween es die Programmiersprache nicht unterstützt oder wenn der Programmierer kein Bock auf OOP hatte.
Das mit der Objektorientierung ist IMHO Geschmackssache. Prozedural geschriebener Code ist meistens sehr viel leichter nachzuvollziehen und damit auch leichter zu warten und zu pflegen. Voraussetzung ist natürlich eine klare Strukturierung und Gliederung. Wenn du das bereits als objektorientierten Ansatz siehst, stimme ich dir allerdings zu.
Trotzdem würde ich sagen: Quelltexte sind als erstens dahingehend zu optimieren, dass sie klar verständlich sind. An zweiter Stelle sehe ich dann die Effizienz der Programmausführung. Dazu gehört, dass man als Programmierer z.B. redundante Operationen vermeidet[1], konstante Ausdrücke aus Schleifen heraushält[2], geeignete Datentypen und Operationen verwendet[3], kleine und auf einen bestimmten Zweck zugeschnittene Funktionen/Module gegenüber eierlegenden Wollmilchsäuen vorzieht[4].
Lange vor diesen Detailfragen sollte allerdings die Wahl einer geeigneten Programmiersprache stehen. Muss es eine Scriptsprache wie z.B. PHP sein? Brauche ich deren Flexibilität und Möglichkeiten, so dass ich dann die Schwerfälligkeit und den Overhead akzeptieren will? Oder doch lieber ein schlankes Programm klassisch in C schreiben und compilieren? Oder noch besser, kleine Teilaufgaben der Performance wegen sogar in Assembler?
Schönen Sonntag noch,
Martin
[1] Ungünstig:
if (bedingung)
$a = true;
else
$a = false;
+ Besser:
$a = (bedingung);
[2] Ungünsig:
for ($i=0; $i<0x4000; $i++)
{ $k = 3*$basis+4 + $i;
...
}
+ Besser:
$offset = 3*$basis+4;
for ($i=0; $i<0x4000; $i++)
{ $k = $offset + $i;
...
}
[3] Ungünstig:
$u = pow($v, 2);
+ Besser:
$u = $v * $v;
[4] Ungünstig:
Einfache Stringersetzung mit RegExp
+ Besser:
Speialisierte Funktionen wie str_replace()
Wer im Glashaus sitzt, sollte sich nur im Dunkeln ausziehen.