comm-press: Your Drupal agency in Hamburg, Germany: Consulting, training, programming, service, webdesign and hosting

Knowledge . Kann man Drupal mit eigenen PHP Extensions beschleunigen? Die Zweite

von Ricardo Kelling
am

Hallo, ich möchte mich noch einmal bedanken für das Feedback des ersten Blogposts über dieses Thema.

Wie ich das Feedback verstanden habe, würden die meisten wohl nicht den Weg über eine Extension gehen.

Ein Grund hierfür ist wohl sicherlich der Aufwand, der dahinter steckt und ein anderer, dass wohl keiner so genau weiß, wie viel Speed es wirklich bringen würde. Um einmal eine Vorstellung davon zu geben, was man mit einer Extension erreichen kann, habe ich mich mal drangesetzt, ein kurzes Script zu schreiben, das Fakultäten berechnet.

Das Script enthält eine kleine Funktion, die sich immer wieder selbst aufruft und die dabei übergebene Variable um eins zurücksetzt. Bevor ich das Script starte, lasse ich mir die aktuelle Zeit in Millisekunden geben und frage danach noch einmal die aktuelle Zeit ab, ziehe dann die End- von der Startzeit ab und habe so die Millisekunden ermittelt, die das Script benötigt, um fertig zu sein.

Wie ihr seht, kein großes Hexenwerk und nicht viel zu tun für den Interpreter ‐ sollte man meinen. Das Script benötigt übrigens im Schnitt 20000 Millisekunden.

Nun habe ich mich ans Werk gemacht und das ganze in einer simplen PHP Extension umgesetzt und das Script nun nochmal aufgerufen, nur anstatt der PHP-Funktion die Extension-Funktion aufgerufen.

Was soll ich sagen, dieses Script benötigt im Schnitt 200 Milisekunden und es macht genau das gleiche. Zum Vergleich hier der C-Quellcode der Funktion.

double do_factorial(double val) { if (val <= 1) return 1; return val * do_factorial(val - 1); }

Also ich denke, das zeigt eindrucksvoll, was eine Extension so bewirken kann. Wer möchte, dem kann ich die fertige .so-Datei gerne schicken und auch das Script, um es selber zu prüfen. Und ich bedanke mich im Voraus für die Kommentare.

MfG das_ricardo