Nachdem Phalcon 2 jetzt stable ist und ein paar Patches die letzten Kinderkrankheiten beseitig haben, bin ich kürzlich von Version 1 auf 2 umgestiegen.
Mit an Bord ist auch die neue Programmiersprache Zephir mit der eigene PHP-Module geschrieben werden können. In diesem Beitrag zeige ich euch mit einem kleinen Benchmark was das bringen kann.
Was ist Zephir?
Zephir versucht die Vorteile von PHP und C++ zu verbinden. Die Sprache ist von der Syntax her stark an PHP angelehnt und jeder PHPler wird sich schnell zurecht finden. Sie kompiliert in normalen C++ Code und überläßt gcc
den Rest. Wer es genau wissen will, findet die Dokumentation hier.
Der PHP-Code für den Benchmark
Nichts spektakuläres, nur ein Array, in dem wir alles hashen.
1 2 3 4 5 6 |
function benchPhp(array $array) { foreach ($array as $idx => $value) { $array[$idx] = sha1($value); } } |
Der Zephir Code für den Benchmark
Zephir benötigt zwingend Namespace und Klasse, also tun wir ihm den Gefallen.
1 2 3 4 5 6 7 8 9 10 11 |
namespace Bench; class Bench { public function testBench1(array arr) { var i; var item; for i, item in arr { let arr[i] = sha1(item); } } } |
Der Benchmark
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$runs = 1000000; $array = []; for ($i = 0; $i < $runs; $i++) { $array[] = 'halbwegs langer string'; } $start = microtime(true); benchPhp($array); $runtime = microtime(true) - $start; echo "\n---------- PHP -----------\n Runtime ", number_format($runtime * 1000, 0, ',', '.'), " ms\n--------------------------\n\n"; $start = microtime(true); (new \Bench\Bench)->testBench1($array); $runtime = microtime(true) - $start; echo "\n--------- Zephir ---------\n Runtime ", number_format($runtime * 1000, 0, ',', '.'), " ms\n--------------------------\n\n" |
Das Ergebnis
1 2 3 4 5 6 7 8 |
---------- PHP ----------- Runtime 1.048 ms -------------------------- --------- Zephir --------- Runtime 525 ms -------------------------- |
Je nach Aufgabenstellung kann also mit Zephir ein Performance-Boost von 50 % erreicht werden.
Was hat das jetzt mit Phalcon 2 zu tun?
Einfach: Phalcon 2 ist vollständig in Zephir geschrieben und ein PHP-Modul. Es genießt also genau die Geschwindigkeitsvorteile, die wir oben gesehen haben.
Mehr zum Thema Performance gibt’s hier.