Mittwoch, 9. Dezember 2015

Performancebemühungen sind bei Cmsmadesimple unbekannt

Seit vielen Jahren wird über eine mangelnde Performance von Cmsmadesimple gemeckert.

Zahlreiche Vorschläge zur Verbesserung wurden gemacht - alles verhallte ohne Konsequenzen

Wenn die Performance aktuell nun besser ist als sie vorher war dann sind es die Verbesserungen von PHP selbst, welche diesen Schwung brachten - nicht aber realisierte Maßnahmen des Developers.


Dabei sind es manchmal nur winzige Kleinigkeiten die etwas bringen.

So ein Beispiel dazu.

In der index.php bringt folgende Änderung mehr als 5% Mehrleistung und das auf einem Schlage:

Vorher

if (!file_exists(CONFIG_FILE_LOCATION) || filesize(CONFIG_FILE_LOCATION) < 100) {
    die ('FATAL ERROR: config.php file not found or invalid');
}

Nachher

if (@filesize(CONFIG_FILE_LOCATION) < 100) {
    die ('FATAL ERROR: config.php file not found or invalid');
}

Der Grund ist einfach - vorher sind 2 Fileaktionen notwendig nachher nur eine und die Abfrage wird kürzer.

Wenn die config.php nicht vorhanden ist gibt filesize ein false zurück, was als 0 gewertet wird, ist config.php vorhanden gibt filesize die Dateigröße zurück, ist sie kleiner als 100 Bytes erfolgt der Abbruch.

Testaufbau mit ab -kc 10 -t 30 http://localhost/cmsms/index.php auf einem High End Server - das ist eine sehr kleine Belastung.

Und so findet man viele Dinge.

Eine der bescheuersten Funktionen (in der Nutzung) ist diese

function debug_buffer($var, $title="")
{
    if( !defined('CMS_DEBUG') || CMS_DEBUG == 0 ) return;
    CmsApp::get_instance()->add_error(debug_display($var, $title, false, true));
}

Klar - es ist bequem einfach aufrufen und gut.
Aber erst in der Funktions selbst wird geprüft ob Debug überhaupt geschaltet ist.

So etwas sollte man NIE machen, es ist immer vorher zu prüfen ob man eine Funktion aufrufen muss oder nicht !

Der richtige Aufruf bringt wieder sichtbare Prozente aber auch etwas mehr Schreibarbeit:

if (defined('CMS_DEBUG'))
                debug_buffer('process template top');

Und so setzt sich das bei Cmsms pausenlos fort.

Wir wollen überhaupt nicht erst bei den billigsten SQL Abfragen anfangen, dazu sage ich nur  Abfrage billig, unnötiger PHP Einsatz nach Abfrage hoch.
Insgesamt kann Cmsms mit solcher Arbeitsweise in der Entwicklung vielleicht noch Laien imponieren - mehr aber nicht.

Schade, denn Cmsmadesimple hätte das Zeug dazu viele anderen Titeln den Rang abzulaufen.

Nachtrag:
Die Änderung aller debug_buffer - Einträge auf die korrekte Art brachte 21% mehr Leistung, d.h. Request's pro Sekunde.


Keine Kommentare:

Kommentar veröffentlichen