playframework/playframework — pull request #1350 by jroper (2013-07-18 06:14:12+00:00)
Title: Perf issue: KeyPathNode.apply method may compute expensive value which it ignores

While profiling our play app looking for performance issues, I found that a not-insignificant amount of time is spent in the Json.stringify method. Tracing the source, I found that KeyPathNode.apply calls JsObject.\, which may call JsValue.\. JsValue.\ calls this.toString, which calls Json.stringify as part of creating a human-friendly error message for JsUndefined. However, we can see that in KeyPathNode.apply, that message is ignored. This call sequence accounts for 99% of our app's calls to the Json.stringify method.