"Übersicht" über die Laufzeiten bzw. Ressourcenverbrauch von Befehlen
Was Mysql betrifft gibt es das schöne Kommando EXPLAIN das man jeder SQL Formulierung vorsetzen kann um dann z.B. mit PHPMyadmin mal zu sehen, was man da eigentlich macht und ob man seine Datenbank bzw. auch die Abfrage selbst optimal aufgebaut hat.
Man kann sich auch mal die Mysql System Informationen anschauen, da werden z.B. über PHPMyadmin wunderbar in Rot markante Stellen angezeigt, die als Hinweis zu Überlegungen in dieser Art dienen.
Hier ein Ausszug aus dem Mysql Handbuch - steht aber auch in jedem SQL Handbuch.
When you precede a SELECT statement with the keyword EXPLAIN, MySQL explains how it would process the SELECT, providing information about how tables are joined and in which order.
With the help of EXPLAIN, you can see when you must add indexes to tables to get a faster SELECT that uses indexes to find the records.
Der Punkt worauf es ankommt ist der in Abfragen und da insbesondere SELECT's möglichst auf Indexe zuzugreifen - mit EXPLAIN kann man das checken.
Wird nicht über Indexe zugegriffen, werden praktisch alle Datensätze geflöht.
Bei einem Miniweb macht sich das kaum bemerkbar, aber hat man da reichlich Seiten schon.
So sind z.B. die Abfragen im Module News so gehalten , dass keinerlei Indexe verwendet werden, ja selbst wenn es da genügend geben würde (gibt es aber nicht).
Da werden dann teils temporäre Tabellen gebildet, Filesort angewendet und alle Datensätze abgeklappert.
Die meisten Coder arbeiten nach dem Motto schnell, einfach und bequem - es funktioniert auch, aber zu häufig mit angezogener Handbremse.
Man sollte sich einmal mit einem Testscript eine Tabelle mit mehreren tausend Inhalten füllen und dann mal mit Indexen und Abfragen spielen.
Web's die Ihre Nahrung offenbar überwiegend aus diesem Nerwstgeil beziehen (davon gibt es offenbar einige) sind damit echt in den Hintern gekniffen, denn die Aufbereitung dauert relativ sehr lange.
Aber auch bei einfachen Abfragen, die häufig eingesetzt werden, sollte man eine Überprüfung vornehmen, denn da kann enorm beschleunigt werden.
Im ürbigen - echte relationale Beziehungen habe ich bei CMSMS noch nirgends entdecken können.
Was PHP betrifft, kann man sich ebenfalls mit dem Handbuch behelfen - da werden direkt z.B. Hinweise gegeben wie array_push sollte man vermeiden da eine normale Zuweisung wie $array[]= $value sehr viel schneller ist, als der Funktionsaufruf array_push.
Es gibt einige wenige Websiten die sich mit PHP Optimierung beschfäftigen.
Das Problem ist bei einer PHP Optimierung immer das gleiche - die Differenz von X zu Y ist immer sehr kein und die sollte man dann nie absolut sondern immer relativ sehen, ansonsten wirft man gleich das Handtuch, weil man meint, es lohnt sich nicht.
Da sind insbesondere auch Schleifenoptimierungen interessante Punkte.
Wenn man z.B. CMSMS unter diesen Gesichtpunkten optimieren wollte, ändert man hunderte von Zeilen . Die Erfolge sind sichtbar und umso mehr, wenn ein mit CMSMS erstelltes Web nicht 10-15 Seiten hat sondern 100 - 200 oder noch mehr.
Wegen der kleinen Schritte die sich im Einzelfall im Microssekundenbereich bewegen, machen sich relativ wenig Coder überhaupt die Mühe da etwas zu verbessern, denn Einzelerfolge gehen da praktisch in den Schwankungen unter, sind nicht erkennbar.
Bei komplexen Systemen wie diese CMS macht sich das jedoch dann gesammelt negativ bemerkbar und die Coder suchen dann nach der grossen Bombe, die das verursacht, erkennen aber nicht die Fliegenfürze, die oftmals die wahre Ursache sind.