Logotipo de PHPIgual estamos hablando de ganar menos que algunos milisegundos, pero, es que además me parece que "cachear" el resultado de algunas funciones es una forma elegante de ver las cosas, y, si procuramos seguir esta línea igual terminamos ganando algunos milisegundos que ya puedan notarse, y, en todo caso, tendremos la seguridad de estar haciendo las cosas medio bien. Además, poquito a poquito, tacita a tacita, etc.

Efectivamente, si una determinada función es muy utilizada, igual conviene cachear su contenido, y utilizar dicho caché para sucesivas llamadas a la función. En una función "suelta" tal vez no se vea tan claro, puesto que, ¿usaríamos variables globales? Lo mismo sale más caro el collar que el perro, entonces, como suele decirse. Pero, hablando de clases y por tanto de métodos, ya no funciones, creo que el asunto pinta mucho mejor.

Si no son estáticas, podemos usar miembros privados de las mismas para almacenar el resultado de esas funciones (métodos) utilizadas profusamente. De este modo ahorraremos las operaciones necesarias para obtener el resultado oportuno, es decir, realizaremos el trabajo una sola vez, y en sucesivas llamadas a la función retornaremos el resultado previamente obtenido y guardado.

class Foo
{
  private $fooResult;
 
  public function FooResult(){
    if(!empty($this->fooResult)){
      return $this->fooResult;
    }else{
      // Aquí el código para obtener
      // el resultado en $result
      $this->fooResult = $result;
      return $this->fooResult;
  }
}

La primera vez que se llame al método "FooResult()", la variable privada "fooResult" estará vacía, y haremos las operaciones necesarias para obtener el resultado que esperamos. Guardaremos el resultado en la variable privada "fooResult", de modo que dejará de estar vacía, y, al contrario, será su valor el que retornemos en sucesivas llamadas a "FooResult()".

Es evidente que esta forma de actuar no estará indicada para todas las funciones: puesto que podría resultar contraproducente tratar de "cachear" el resultado de todas las funciones sin más ni más. Pero, es posible que notemos que cierta función se usa muy a menudo, y que además su resultado es "cacheable", y creo que no estaría demás tener en cuenta lo dicho.