and flexible but heavily use reflection in Runtime to generate code. So it effect start-up time longer and memory usage. 2. Dagger 1: 1. Successor of Guice, faster then Guice because of generating code in compile time. 2. It still use reflection code when generating code and creating graph composition at Runtime. 3. Hard to manage scope of object. 3. Dagger 2: 1. Successor of Dagger 1 with no reflection, graph object composition at compile time. 2. Increase performance: Google said their apps gained 13% of processor performance to compare with Dagger 1. 3. Provides mechanism to manage object scope.