Use reverse index for AOP matching
The AOP matching done inside the ProxyClassBuilder is very slow. It doesn't scales well, because the complexity is tied by the number of pointcuts * methods (over all proxyable classes).
Since this number could get very large and the matching is a costly operataion, we should use a reverse index to get only the interesting pointcuts for a given target class.
Most pointcuts like
method(F3\FLOW3\MVC\Web\Routing\Router->resolve()) could be easily indexed by using the class name and method name as the keys. Also the class and method tags could be used in an index. The setting pointcut filter could be evaluated and skipped. Since we have the
This could greatly reduce the number of pointcut matchings done for each method.