1
0
Fork 0
Commit Graph

20 Commits (4c7d271a36ddc484b107a06f674b7eb932755334)

Author SHA1 Message Date
Nils Adermann 1228bcdffc Internalize pool creation in repository set, store root aliases in set
The pool is still exposed too early in a few places which will require
further refactoring
2018-09-11 13:34:18 +02:00
Jordi Boggiano 122e422682 CS fixes 2017-03-08 15:16:44 +01:00
rubenrua 4e1887a721 Improve memory usage resolving dependencies
It is known that composer update takes a lot of memory: #5915, #5902,

I am playing with a profiler (@blackfireio) to make a demo in my local
PHP meetup (@phpvigo) and I found out a way to use less memory. These
are my first tests:

* Private project using PHP 5.6:
  * Memory: from 1.31GB to 1.07GB
  * Wall Time: from 2min 8s to 1min 33s

* symfony-demo using PHP 7.1 in my old mac book:
  * Memory: from 667MB to 523MB
  * Wall Time: from  5min 29s to 5min 28s

Not use an array inside conflict rules is this improvement main idea:

```php
<?php
//Memory 38MB
gc_collect_cycles();
gc_disable();

class Rule
{
    public $literals;

    public function __construct(array $literals)
    {
        $this->literals = $literals;
    }
}

$rules = array();

$i = 0;
while ($i<80000){ //
    $i++;

    $array = array(-$i, $i);
    $rule = new Rule($array);
    $rules[] = $rule;
}
```

```php
<?php
//Memory 11.1MB
gc_collect_cycles();
gc_disable();

class Rule2Literals
{
    public $literal1;
    public $literal2;

    public function __construct($literal1, $literal2)
    {
        $this->literal1 = $literal1;
        $this->literal2 = $literal2;
    }
}

$rules = array();

$i = 0;
while ($i<80000){ //
    $i++;

    $rule = new ConflictRule(-$i, $i);
    $rules[] = $rule;
}
```

More info https://github.com/composer/composer/pull/6168
2017-02-20 18:52:17 +00:00
Yanick Witschi 4a769a785c Reduce calls on Rule::getHash() 2016-09-30 17:25:41 +02:00
Jordi Boggiano c74e6df65d Fix strings being passed to an int arg, fixes 7.1 build 2016-04-01 11:52:19 +01:00
David Prévot 933a8e1d09 Fix method name
It makes the test fail with recent (>= 3.1) phpunit-mock-objects
version.
2016-03-28 23:37:19 -04:00
Nils Adermann 26598c4a9a Remove unnecessary pool reference from rules 2014-12-01 19:02:50 +01:00
Nils Adermann d77400ade2 Make ruleById lookup table in rule set public
Saves about 500k function calls on a packagist update
2014-12-01 18:28:45 +01:00
Jordi Boggiano 38917c2047 Add parallel build to travis script 2013-09-25 10:23:48 +02:00
Nils Adermann 451bab1c2c Get rid of Literal object / literal id mix, use literals only to save memory 2012-05-19 20:38:56 +02:00
Nils Adermann 15f43571b9 Rules of type feature are no longer needed 2012-05-08 19:26:50 +02:00
Nils Adermann 5daeacf0ac We won't implement choice rules, you need to edit composer.json to choose 2012-05-08 19:25:38 +02:00
Jordi Boggiano f7440076fa Revert "Merge remote-tracking branch 'naderman/remove-packages-by-default'"
This reverts commit 2988152602, reversing
changes made to adb4188e12.
2012-04-29 22:21:58 +02:00
Nils Adermann f4d5568937 Rules of type feature are no longer needed 2012-04-27 18:28:51 +02:00
Nils Adermann 0e537b9c93 We won't implement choice rules, you need to edit composer.json to choose 2012-04-27 17:46:13 +02:00
Volker Dusch 3fb75faa75 Now that no more update rules are created the code that handles them can be removed too.
Also adapted the tests that used TYPE_UPDATE exemplarily to use TYPE_FEATURE.
2012-02-18 19:19:49 +01:00
Nils Adermann 8aa0127de8 Remove test of undefined behaviour for unknown types in rulesets 2012-02-18 13:09:19 +01:00
Leszek Prabucki de7f666118 Added and extended some unit tests 2012-01-24 18:44:54 +01:00
Nils Adermann 825deff09f Completed analysis of unsolvable situations and main decision process 2011-07-08 07:11:04 -04:00
Nils Adermann bc672deb32 Moving rule iteration logic to a separate RuleSet and RuleSetIterator class 2011-06-27 00:11:57 +02:00