Attualmente ho uno strumento da riga di comando che utilizza Guice e le sue estensioni in modo piuttosto pesante.Linee guida generali sulle prestazioni Guice
Dopo aver completato la funzionalità dello strumento, ho determinato che le prestazioni sono inferiori agli standard e ho iniziato la profilazione utilizzando hprof semplice.
Ciò ha evidenziato che la creazione dell'iniettore è un problema di prestazioni significativo. In genere evito di fare qualsiasi lavoro reale nei moduli e riservo il lavoro di elaborazione intensivo per i provider ...
Con questo dato, quali sono le linee guida generali sulle prestazioni per Guice? Dovrei evitare di usare @AssistedInject e FactoryModuleBuilders? Evitare @Singletons se possibile? Assicurarsi che tutti i binding siano espliciti ed evitare i binding JIT?
Ho cercato dappertutto, ma non riesco davvero a trovare molto per affrontare le prestazioni di base di Guice, a parte le persone che dicono che è molto veloce.
Bene, i moduli vengono valutati solo una volta, ma i provider molte volte. Quindi lo farei esattamente nell'altro modo se c'è un qualsiasi modo per ottenere l'effetto desiderato. Anche singleton: perché evitarli? Abbracciali. Il lavoro svolto una volta non può essere più lento del lavoro svolto due volte. –
Questo non risponde necessariamente alla domanda ... dal profilo, osservo che solo la chiamata a createInjector è la metà del mio tempo di elaborazione. – thebamaman
Il tuo profilo include o esclude i tempi per il caricamento delle classi, GC e JIT? Inoltre: hai controllato la domanda [http://stackoverflow.com/questions/4748405/how-to-improve-guice-performance-at-startup]? –