I have an application that utilizes a Provider Pattern. The application utilizes the provider implementation by calling interfaces that are defined by the application. 

I'm currently researching ways I can optimize my application around interface calls.

I can limit the complexity of my application to the following:

1. I only need to load the implementation dynamically once on start-up
2. I only need one provider implementation for a particular set of interfaces for an application instance at any one time.

I would appreciate any strategies people have put into practice to:

1. Reducing interface calls
2. Any tricks to generically call the interface implementation classes directly.
3. Various ways to take better advantage of any compiler optimizations.

Thank you!