From e88df7429fc707caa9fb3e9361cb7e7526617221 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Wed, 8 Jul 2015 13:36:19 +0200 Subject: [PATCH 1/2] Remove a few hundred/thousand array_merge calls --- src/Composer/Package/Version/VersionParser.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Composer/Package/Version/VersionParser.php b/src/Composer/Package/Version/VersionParser.php index 89bf4819f..f7650f367 100644 --- a/src/Composer/Package/Version/VersionParser.php +++ b/src/Composer/Package/Version/VersionParser.php @@ -257,10 +257,11 @@ class VersionParser foreach ($orConstraints as $constraints) { $andConstraints = preg_split('{(?< ,]) *(? 1) { - $constraintObjects = array(); + $constraintObjects = array(array()); foreach ($andConstraints as $constraint) { - $constraintObjects = array_merge($constraintObjects, $this->parseConstraint($constraint)); + $constraintObjects[] = $this->parseConstraint($constraint); } + $constraintObjects = call_user_func_array('array_merge', $constraintObjects); } else { $constraintObjects = $this->parseConstraint($andConstraints[0]); } From 3fd46723829c9fd9ade5db3a2f6fdb8765542738 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Thu, 9 Jul 2015 12:57:34 +0200 Subject: [PATCH 2/2] VersionParser: Append elements directly instead of array_merge --- src/Composer/Package/Version/VersionParser.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Composer/Package/Version/VersionParser.php b/src/Composer/Package/Version/VersionParser.php index f7650f367..0f9faa8a7 100644 --- a/src/Composer/Package/Version/VersionParser.php +++ b/src/Composer/Package/Version/VersionParser.php @@ -257,11 +257,12 @@ class VersionParser foreach ($orConstraints as $constraints) { $andConstraints = preg_split('{(?< ,]) *(? 1) { - $constraintObjects = array(array()); + $constraintObjects = array(); foreach ($andConstraints as $constraint) { - $constraintObjects[] = $this->parseConstraint($constraint); + foreach ($this->parseConstraint($constraint) as $parsedConstraint) { + $constraintObjects[] = $parsedConstraint; + } } - $constraintObjects = call_user_func_array('array_merge', $constraintObjects); } else { $constraintObjects = $this->parseConstraint($andConstraints[0]); }