Uso de val perezoso para almacenar en caché la representación de cadena

Encontré el siguiente código en el número especial de JAXMag Scala:

package com.weiglewilczek.gameoflife

case class Cell(x: Int, y: Int) {
  override def toString = position
  private lazy val position = "(%s, %s)".format(x, y)
}

¿El uso delazy val en el código anterior proporciona un rendimiento considerablemente mayor que el siguiente código?

package com.weiglewilczek.gameoflife

case class Cell(x: Int, y: Int) {
  override def toString = "(%s, %s)".format(x, y)
}

¿O es solo un caso de optimización innecesaria?

Respuestas a la pregunta(5)

Su respuesta a la pregunta