Pregunta

Si entiendo correctamente, Groovy se escribe dinámicamente, pero dado que es casi un superconjunto de Java, la información de tipo estático se puede proporcionar opcionalmente. Esto podría ser útil si escribir algo en el que solo unas pocas partes sean críticas en el rendimiento mientras evitan la fricción de usar múltiples idiomas. Las anotaciones tipo solo se pueden proporcionar para las partes críticas de rendimiento.

¿Cuál es la penalización de rendimiento por usar Groovy en lugar de Java en funciones/clases donde se usa el subconjunto tipo Java y se proporcionan anotaciones de tipo estático?

¿Fue útil?

Solución

Declarar tipos en Groovy no acelera mágicamente las cosas. Todavía es un código maravilloso y necesita pasar por el MOP en caso de que algo se haya cambiado dinámicamente. No obtienes un enlace estático solo porque has dado información de tipo.

Para las cosas sensibles al rendimiento para las que el código Groovy simplemente no es lo suficientemente rápido, deberá escribir un código Java real.

Esta pregunta es muy similar a un el anterior donde dio una respuesta Excavar en el código de byte generado que muestra cómo escribir algo no acelera las cosas.

Otros consejos

También puedes usar Groovy ++. Deja caer el groovyp.jar en el classpath y anotar un paquete, clase o método con @Typed. El código anotado compasa el MOP, por lo tanto, es prácticamente tan rápido como el código Java.

E incluso si no declara un tipo, el código @Typed inferirá el tipo si es posible en el momento de la compilación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top