Sto caricando file XML dal disco utilizzando file_get_contents, e come test trovo che posso caricare un file 156K utilizzando file_get_contents()
1.000 volte in 3.99 secondi. Ho sottoclassato la parte che fa il caricamento e l'ho sostituita con un livello memcache, e sulla mia macchina di sviluppo trovo che posso fare 1000 carichi dello stesso documento in 4,54 secondi.Perché file_get_contents è più veloce di memcache_get?
Apprezzo che file_get_contents() effettui un po 'di cache, ma sembra che sia in realtà più veloce di una nota tecnica di caching. Su un singolo server, le prestazioni di file_get_contents()
sono buone?
Sono in PHP 5.2.17 tramite Macports, OS X 10.6.8.
Modifica: ho trovato su documenti XML di queste dimensioni, c'è un piccolo vantaggio nell'utilizzo del flag MEMCACHE_COMPRESSED
. 1.500 carichi via memcache vengono eseguiti in 6.44 secondi (con compressione) anziché 6.74 (senza). Tuttavia entrambi sono più lenti di file_get_contents
, che esegue lo stesso numero di carichi in 5.71 secondi.
Ah, interessante. Stai dicendo che su un server web in cui vengono caricati vari file XML in ogni momento, le prestazioni dell'approccio memcache _might_ in alcuni casi sono migliori? (Prevedo di implementarlo su un VPS Linux di fascia bassa, probabilmente con 512 MB di RAM - molto gratuito per il 64M predefinito che memcache riserva per impostazione predefinita.) – halfer
Tuttavia, mi chiedo se la contesa che farebbe uscire qualcosa dalla cache di FS equivarrebbe allo stesso modo a buttare fuori qualcosa dalla cache di memcache ';-)' – halfer
Su un VPS dedicato ad una app, dovresti essere in grado di ottenere tutto per adattarsi. Comunque vale la pena "ridimensionare" le tue cache: usa 32M per memcache o meno se è abbastanza. Assicurati di utilizzare APC o Xcache se la tua app è basata su PHP. Non dimenticare che puoi ottenere un buon dividendo delle prestazioni dall'ottimizzazione delle cache MySQL se usi MySQL, ... 512 Mb è abbastanza piccolo da essere necessario allocare saggiamente. – TerryE