Ho letto il numero "What's new in Groovy 2.0" e sono un po 'confuso su quando usare @CompileStatic. L'articolo menziona che l'annotazione @CompileStatic
è stata aggiunta per gli sviluppatori che non erano in grado di sfruttare la parte dinamica di Java7.Devo usare Groovy's @CompileStatic se sto usando Java 7
Così gli sviluppatori alla ricerca di miglioramenti delle prestazioni non avrebbe visto cambia molto in Groovy 2.0, se non sono in grado di girare su JDK 7. Per fortuna, il team di sviluppo Groovy pensato gli sviluppatori potrebbero ottenere interessante incremento delle prestazioni, tra le altre vantaggi, consentendo di compilare staticamente il codice di tipo controllato.
La mia domanda è, se sto usando JDK 7 e seguire le istruzioni per aggiungere il flag --indy
, devo aggiungere @CompileStatic
per vedere alcuni aumenti di prestazioni? This blog suggerisce che lo farei, ma non sono sicuro che abbia compilato correttamente dato che l'ha fatto all'interno di Eclipse.
Aggiornamento: Qui ci sono le statistiche quando si eseguono diverse permutazioni del codice di Fibonacci.
> groovy --indy FibBoth.groovy
..........Fib (non-static indy): 1994.465
..........Fib (static indy): 529.197
> groovy FibBoth.groovy
..........Fib (non-static): 1212.788
..........Fib (static): 525.671
Nota: questa domanda sembra un po 'confusa ora che capisco che le funzionalità sono indipendenti. Poiché la base della domanda è attorno alla confusione dalle note che mi hanno fatto pensare che le due caratteristiche erano correlate, penso che abbia senso non cambiare la formulazione della domanda e consentire la risposta accettata che spiega le differenze.
Buona risposta. La parte che mi mancava dal testo della release è che sono caratteristiche indipendenti. Quindi, anche se si utilizza Java 7 con -indy, CompileStatic può dare un potenziamento perf (purché il codice possa effettivamente essere controllato dal compilatore). Abbiamo fatto un rapido test delle diverse permutazioni con indy e CompileStatic con Fibonacci e abbiamo trovato quanto segue: – Scott