Domanda

Se ho capito bene Groovy è dinamicamente tipizzato, ma dal momento che è quasi un superset di Java, le informazioni di tipo statico può opzionalmente essere fornita. Questo potrebbe essere utile se scrivere qualcosa in cui solo alcune parti sono prestazioni critiche, evitando l'attrito di utilizzare più lingue. annotazioni di tipo potrebbero essere fornite solo per le parti critiche di prestazioni.

Qual è la penalizzazione delle prestazioni per l'utilizzo di Groovy, invece di Java in funzioni / classi in cui il Java-like sottoinsieme viene utilizzato e le annotazioni di tipo statico sono forniti?

È stato utile?

Soluzione

La dichiarazione di tipi in Groovy non fa magicamente accelerare le cose. E 'ancora il codice Groovy e ha bisogno di passare attraverso il MOP nel caso in cui qualcosa ha ottenuto dinamicamente cambiato. Non si ottiene statica che collega solo perché hai dato informazioni sul tipo.

Per le cose sensibili alle prestazioni, che il codice Groovy semplicemente non è abbastanza veloce per, è necessario scrivere codice Java reale.

Questa domanda è molto simile a un precedente dove ha dato una risposta scavare nel bytecode generato che mostra come la tipizzazione qualcosa fa le cose non ad accelerare.

Altri suggerimenti

È inoltre possibile utilizzare Groovy ++. Eliminare la groovypp.jar nel classpath, e annotare un pacchetto, di classe, o un metodo con @Typed. Il codice annotato da-passa il MOP, quindi è praticamente veloce come codice Java.

E anche se non si dichiara un tipo, codice @Typed sarà dedurre il tipo, se possibile, al momento della compilazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top