Aún no he encontrado una solución elegante para esto. Tengo una clase con un método que quiero hacer un seguimiento del uso de la memoria de la función sin modificar:Uso de la memoria de seguimiento de un método
class Example
{
public function hello($name)
{
$something = str_repeat($name, pow(1024, 2));
}
}
$class = new Example;
$class->hello('a');
Así que la tarea es, la cantidad de memoria hace hello()
uso sin interferir con ella?
Nota: El uso de memoria de este método debe ser de 1 MB. He intentado envolver la llamada con memory_get_usage();
en vano:
class Example
{
public function hello($name)
{
$something = str_repeat($name, pow(1024, 2));
}
}
$class = new Example;
$s = memory_get_usage();
$class->hello('a');
echo memory_get_usage() - $s;
Esto sólo da lugar a 144
bytes (no es correcto en absoluto). He intentado varias magias con Reflection usando la clase ReflectionMethod
.
Tengo la sensación de lo que tengo que hacer es calcular la diferencia en el método :(Si alguien se le ocurre nada más limpia entonces lo que realmente hace que mi día
Editar:.. debería mencionar esto es en el contexto de una aplicación de evaluación comparativa. Por lo tanto, aunque memory_get_peak_usage
funciona en el sentido de que devuelve correctamente el uso de la memoria, también sesgará las pruebas ejecutadas después de un método de memoria alta. Ahora, si había una manera de restablecer las estadísticas de la memoria, podría ser bueno también.
+1 y buena suerte para encontrar una respuesta – alex
¿Qué necesita el uso de memoria para? Sólo curioso. –
Estoy tratando de arreglar un error con una biblioteca llamada CodeBench. http://img833.imageshack.us/img833/3306/selection006p.png y algún código: https://github.com/kohana/codebench/blob/3.0.x/classes/kohana/codebench.php#L103 –