I'm not really answering your question, but, AFAIK, Groovy is not the only
JVM language to use exceptions for control flow. Maybe it is using too many
of them, too often, I don't know. Anyway, not filling the stack trace can
help a lot with exception performance, so that may be a cheap solution.

On 5 July 2016 at 10:05, Thibault Kruse <tibokr...@googlemail.com> wrote:

> Hi,
>
> (I tried sending this mail before, failed so far)
>
> This is about using @CompileStatic inside core Groovy code.
>
> The analysis of gradle plugins by Cedric revealed a potential
> problem with dynamic Groovy:
>
> http://melix.github.io/blog/2016/05/gradle-kotlin.html
> "I think at some point, someone made a terrible design decision in
> Groovy. I don’t know who it was, but the idea was to rely on
> exceptions to control the flow of resolution of properties. This means
> that when a property is missing, typically in a closure, an exception
> is thrown. When a method is not found, an exception is thrown. When a
> property is not found, an exception is thrown. That seemed to be a
> good idea, because in the end, you want to provide the user with an
> error, but in practice, this is catastrophic, because Groovy can
> capture those exceptions. Typically, in a delegation chain (nested
> closures), a containing closure or class can actually have this
> property defined, or implement property missing/method missing. Now,
> re-think a second about the "simple" example of Gradle build above:
> how do you now where to look up for message, top, signature, …? Now
> you know: f* exceptions are thrown, stack traces are filled, and
> eventually captured because some composite dynamic object finally
> wants to answer the message… In practice, for some builds I have
> profiled, it was tens of thousands of exceptions being thrown and
> stack traces filled for nothing. And that has a terrible impact on
> performance."
>
> Now I am wondering, since parts of Groovy itself are written in
> Groovy, and @CompileStatic is not much used in side Groovy itself,
> does core Groovy suffer from performance issues due to the same reasons
> as well?
>
  • [no subject] Thibault Kruse
    • Re: Alessio Stalla
    • Re: Jochen Theodorou
      • Re: Remi Forax
        • Re: Cédric Champeau

Reply via email to