PHP Cache Methoden Benchmark
von MArc
am 17.11.11 um 08:20 (726 Hits)
Servus Leute,
da die Frage in einem anderen Tutorial aufgekommen ist und ich das ohnehin
schon länger mal in Zahlen haben wollte, habe ich eben ein paar Caching-Methoden
in PHP auf Geschwindigkeit getestet.
Folgende Daten wurden pro Request 20x geschrieben bzw aus dem Cache zurueck gelesen:
Getestet wurden folgende Varianten zum Cachen:PHP-Code:$data = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
$array = array (
'timeout' => 1321496815,
'time' => 1321493215,
'value' =>
array (
'date_order' => '[\'month\', \'date\', \'year\', \'/\']',
'ordinal' => '(dayOfMonth > 3 && dayOfMonth < 21) ? ',
),
);
- APC apc_store/apc_fetch
- PHP Files files_put_contents/include mit aktivierten APC (das Scripte ja bekanntlich zwischenspeichert und somit deutlich schneller ist)
- PHP Files file_put_contents/include
- Memcached mit php memcached client
- Memcached mit php memcache client
- Redis mit PhpRedis client (IMHO wesentlich besser als memached. Kann ich nur jedem empfehlen, mal ein Blick reinzuwerfen: http://redis.io/)
- MySQL mit gleichen Daten nur in einer Tabelle (Felder: id(indexed)/content)
Die Geschwindigkeit selbst wurde mit dem Apache-Benchmark getestet, um ein möglichst echtes Caching zu simulieren (Über mehrere Threads hinweg).
Code :
1 ab -n 1000 -c 100 http://localhost/cache-benchmark.php?target=apc&method=get
Zum cachen selbst wurde dieses Klasse mit eben einem PHP-Script benutzt.
Diese Zahlen muss man natürlich mit Vorsicht geniessen. Zum Beispiel ist ab 2.000 Sessions die Redis/Memcached-Variante deutlich schneller als eine Datenbank (sofern die Datenbank mit Standardeinstellung betrieben wird, was leider oft der Fall ist).
However, hier die Zahlen(Klick zum Zoomen):
Wie man deutlich erkennt, hat APC hier deutlich ein Vorsprung. Leider ist die Sache aber nicht immer mit einem Load-Balanced Szenario benutzbar. Fuer Sessions zum Beispiel schon mal leider nicht.
Die beiden Cache-Server geben sich nicht viel, sofern man die richtige PHP Lib benutzt, um den Server dann anzusprechen und File-Caching ohne APC/Opcode-Cacher (wie z.B. auch xcache) sollte man aber generell wohl nicht empfehlen.
Gruesse,
MArc




(Klick zum Zoomen):


