1
0
Fork 0

Add memoization to parseConstraints, saves some (6-7% here) RAM and marginal CPU time

pull/4517/merge
Jordi Boggiano 2016-02-24 17:27:42 +00:00
parent cdea645eab
commit c9436438ff
20 changed files with 36 additions and 22 deletions

View File

@ -20,7 +20,7 @@ use Composer\Repository\CompositeRepository;
use Composer\Repository\PlatformRepository; use Composer\Repository\PlatformRepository;
use Composer\Plugin\CommandEvent; use Composer\Plugin\CommandEvent;
use Composer\Plugin\PluginEvents; use Composer\Plugin\PluginEvents;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputOption;

View File

@ -20,7 +20,7 @@ use Composer\Factory;
use Composer\Installer; use Composer\Installer;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\Json\JsonManipulator; use Composer\Json\JsonManipulator;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Plugin\CommandEvent; use Composer\Plugin\CommandEvent;
use Composer\Plugin\PluginEvents; use Composer\Plugin\PluginEvents;
use Composer\Repository\CompositeRepository; use Composer\Repository\CompositeRepository;

View File

@ -16,7 +16,7 @@ use Composer\DependencyResolver\Pool;
use Composer\DependencyResolver\DefaultPolicy; use Composer\DependencyResolver\DefaultPolicy;
use Composer\Factory; use Composer\Factory;
use Composer\Package\CompletePackageInterface; use Composer\Package\CompletePackageInterface;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Plugin\CommandEvent; use Composer\Plugin\CommandEvent;
use Composer\Plugin\PluginEvents; use Composer\Plugin\PluginEvents;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;

View File

@ -14,7 +14,7 @@ namespace Composer\DependencyResolver;
use Composer\Package\BasePackage; use Composer\Package\BasePackage;
use Composer\Package\AliasPackage; use Composer\Package\AliasPackage;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\ConstraintInterface;
use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\Constraint;
use Composer\Semver\Constraint\EmptyConstraint; use Composer\Semver\Constraint\EmptyConstraint;

View File

@ -27,7 +27,7 @@ use Composer\Util\Silencer;
use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Formatter\OutputFormatterStyle;
use Composer\EventDispatcher\EventDispatcher; use Composer\EventDispatcher\EventDispatcher;
use Composer\Autoload\AutoloadGenerator; use Composer\Autoload\AutoloadGenerator;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Downloader\TransportException; use Composer\Downloader\TransportException;
use Seld\JsonLint\JsonParser; use Seld\JsonLint\JsonParser;

View File

@ -13,7 +13,7 @@
namespace Composer\Package; namespace Composer\Package;
use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\Constraint;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
/** /**
* @author Jordi Boggiano <j.boggiano@seld.be> * @author Jordi Boggiano <j.boggiano@seld.be>

View File

@ -17,7 +17,7 @@ use Composer\Package\AliasPackage;
use Composer\Package\Link; use Composer\Package\Link;
use Composer\Package\RootAliasPackage; use Composer\Package\RootAliasPackage;
use Composer\Package\RootPackageInterface; use Composer\Package\RootPackageInterface;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
/** /**
* @author Konstantin Kudryashiv <ever.zet@gmail.com> * @author Konstantin Kudryashiv <ever.zet@gmail.com>

View File

@ -18,7 +18,7 @@ use Composer\Package\AliasPackage;
use Composer\Config; use Composer\Config;
use Composer\Factory; use Composer\Factory;
use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionGuesser;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Repository\RepositoryManager; use Composer\Repository\RepositoryManager;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;

View File

@ -15,7 +15,7 @@ namespace Composer\Package\Loader;
use Composer\Package; use Composer\Package;
use Composer\Package\BasePackage; use Composer\Package\BasePackage;
use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\Constraint;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Repository\PlatformRepository; use Composer\Repository\PlatformRepository;
/** /**

View File

@ -12,7 +12,7 @@
namespace Composer\Package; namespace Composer\Package;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Util\ComposerMirror; use Composer\Util\ComposerMirror;
/** /**

View File

@ -15,7 +15,7 @@ namespace Composer\Package\Version;
use Composer\Config; use Composer\Config;
use Composer\Repository\Vcs\HgDriver; use Composer\Repository\Vcs\HgDriver;
use Composer\IO\NullIO; use Composer\IO\NullIO;
use Composer\Semver\VersionParser as SemverVersionParser; use Composer\Package\Version\VersionParser;
use Composer\Util\Git as GitUtil; use Composer\Util\Git as GitUtil;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;
use Composer\Util\Svn as SvnUtil; use Composer\Util\Svn as SvnUtil;
@ -39,7 +39,7 @@ class VersionGuesser
private $process; private $process;
/** /**
* @var SemverVersionParser * @var VersionParser
*/ */
private $versionParser; private $versionParser;
@ -48,7 +48,7 @@ class VersionGuesser
* @param ProcessExecutor $process * @param ProcessExecutor $process
* @param VersionParser $versionParser * @param VersionParser $versionParser
*/ */
public function __construct(Config $config, ProcessExecutor $process, SemverVersionParser $versionParser) public function __construct(Config $config, ProcessExecutor $process, VersionParser $versionParser)
{ {
$this->config = $config; $this->config = $config;
$this->process = $process; $this->process = $process;

View File

@ -16,6 +16,20 @@ use Composer\Semver\VersionParser as SemverVersionParser;
class VersionParser extends SemverVersionParser class VersionParser extends SemverVersionParser
{ {
private static $constraints = array();
/**
* {@inheritDoc}
*/
public function parseConstraints($constraints)
{
if (!isset(self::$constraints[$constraints])) {
self::$constraints[$constraints] = parent::parseConstraints($constraints);
}
return self::$constraints[$constraints];
}
/** /**
* Parses an array of strings representing package/version pairs. * Parses an array of strings representing package/version pairs.
* *

View File

@ -17,7 +17,7 @@ use Composer\Package\BasePackage;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;
use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\ArrayLoader;
use Composer\Package\Dumper\ArrayDumper; use Composer\Package\Dumper\ArrayDumper;
use Composer\Semver\VersionParser as SemverVersionParser; use Composer\Package\Version\VersionParser;
use Composer\Semver\Semver; use Composer\Semver\Semver;
use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\Constraint;
@ -160,7 +160,7 @@ class VersionSelector
private function getParser() private function getParser()
{ {
if ($this->parser === null) { if ($this->parser === null) {
$this->parser = new SemverVersionParser(); $this->parser = new VersionParser();
} }
return $this->parser; return $this->parser;

View File

@ -16,7 +16,7 @@ use Composer\Composer;
use Composer\EventDispatcher\EventSubscriberInterface; use Composer\EventDispatcher\EventSubscriberInterface;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Package\Package; use Composer\Package\Package;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Repository\RepositoryInterface; use Composer\Repository\RepositoryInterface;
use Composer\Package\AliasPackage; use Composer\Package\AliasPackage;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;

View File

@ -15,7 +15,7 @@ namespace Composer\Repository;
use Composer\Package\AliasPackage; use Composer\Package\AliasPackage;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;
use Composer\Package\CompletePackageInterface; use Composer\Package\CompletePackageInterface;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\ConstraintInterface;
use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\Constraint;

View File

@ -15,7 +15,7 @@ namespace Composer\Repository;
use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\ArrayLoader;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;
use Composer\Package\AliasPackage; use Composer\Package\AliasPackage;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\DependencyResolver\Pool; use Composer\DependencyResolver\Pool;
use Composer\Json\JsonFile; use Composer\Json\JsonFile;
use Composer\Cache; use Composer\Cache;

View File

@ -18,7 +18,7 @@ use Composer\Json\JsonFile;
use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\ArrayLoader;
use Composer\Package\Locker; use Composer\Package\Locker;
use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionGuesser;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Util\ProcessExecutor; use Composer\Util\ProcessExecutor;
/** /**

View File

@ -13,7 +13,7 @@
namespace Composer\Repository; namespace Composer\Repository;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Repository\Pear\ChannelReader; use Composer\Repository\Pear\ChannelReader;
use Composer\Package\CompletePackage; use Composer\Package\CompletePackage;
use Composer\Repository\Pear\ChannelInfo; use Composer\Repository\Pear\ChannelInfo;

View File

@ -15,7 +15,7 @@ namespace Composer\Repository;
use Composer\Config; use Composer\Config;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;
use Composer\Package\CompletePackage; use Composer\Package\CompletePackage;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Plugin\PluginInterface; use Composer\Plugin\PluginInterface;
/** /**

View File

@ -14,7 +14,7 @@ namespace Composer\Repository;
use Composer\Downloader\TransportException; use Composer\Downloader\TransportException;
use Composer\Repository\Vcs\VcsDriverInterface; use Composer\Repository\Vcs\VcsDriverInterface;
use Composer\Semver\VersionParser; use Composer\Package\Version\VersionParser;
use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\ArrayLoader;
use Composer\Package\Loader\ValidatingArrayLoader; use Composer\Package\Loader\ValidatingArrayLoader;
use Composer\Package\Loader\InvalidPackageException; use Composer\Package\Loader\InvalidPackageException;