Browse Source

Cache whatProvide calls

Jordi Boggiano 12 years ago
parent
commit
21a0ae9cad
1 changed files with 13 additions and 0 deletions
  1. 13 0
      src/Composer/DependencyResolver/Pool.php

+ 13 - 0
src/Composer/DependencyResolver/Pool.php

@@ -46,6 +46,7 @@ class Pool
     protected $acceptableStabilities;
     protected $stabilityFlags;
     protected $versionParser;
+    protected $providerCache = array();
     protected $id = 1;
 
     public function __construct($minimumStability = 'stable', array $stabilityFlags = array())
@@ -215,6 +216,18 @@ class Pool
      * @return array A set of packages
      */
     public function whatProvides($name, LinkConstraintInterface $constraint = null)
+    {
+        if (isset($this->providerCache[$name][(string) $constraint])) {
+            return $this->providerCache[$name][(string) $constraint];
+        }
+
+        return $this->providerCache[$name][(string) $constraint] = $this->computeWhatProvides($name, $constraint);
+    }
+
+    /**
+     * @see whatProvides
+     */
+    private function computeWhatProvides($name, $constraint)
     {
         $candidates = array();