Estoy cargando archivos XML desde el disco usando file_get_contents, y como una prueba me parece que puedo cargar un archivo 156K usando file_get_contents()
1,000 veces en 3.99 segundos. He subclasificado la parte que hace la carga y la reemplacé con una capa de Memcache, y en mi máquina de desarrollo encuentro que puedo hacer 1000 cargas del mismo documento en 4.54 segundos.¿Por qué file_get_contents es más rápido que memcache_get?
Aprecio que file_get_contents() haga algo de almacenamiento en caché, pero parece que en realidad es más rápido que una conocida técnica de almacenamiento en caché. En un único servidor, ¿el rendimiento de file_get_contents()
es tan bueno como se puede obtener?
Estoy en PHP 5.2.17 a través de Macports, OS X 10.6.8.
Editar: He encontrado en documentos XML de este tamaño, hay un pequeño beneficio en el uso de la bandera MEMCACHE_COMPRESSED
. Se realizan 1.500 cargas a través de Memcache en 6.44 segundos (con compresión) en lugar de 6.74 (sin). Sin embargo, ambos son más lentos que file_get_contents
, que hace la misma cantidad de cargas en 5,71 segundos.
Ah, interesante. ¿Estás diciendo que en un servidor web en el que se cargan varios archivos XML todo el tiempo, el rendimiento del enfoque de memcache _might_ en algunos casos será mejor? (Espero implementar en un VPS Linux de gama baja, probablemente con 512 MB de RAM, bastante gratis para el 64M predeterminado que Memcache reserva por defecto.) – halfer
Aún así, me pregunto si la disputa que podría eliminar algo de la memoria caché de FS sería tan probable como eliminar algo de la memoria caché de Memcache ';-)' – halfer
En un VPS que está dedicado a una aplicación, usted debería ser capaz de hacer que todo encaje Sin embargo, vale la pena "dimensionar correctamente" sus cachés: use 32M para Memcache o menos si eso es suficiente. Asegúrate de usar APC o Xcache si tu aplicación está basada en PHP. No olvide que puede obtener un buen dividendo de rendimiento si sintoniza los cachés de MySQL si usa MySQL, ... 512Mb es lo suficientemente pequeño como para asignarlo con prudencia. – TerryE