1
0
Fork 0
Commit Graph

356 Commits (02b57ff4a2bac62f9df9c71c641b850f390537e2)

Author SHA1 Message Date
Denis Brumann 2df1a69287 Improve IDE autocompletion
According to type 2nd constructor-argument `$reasonData` can either be a Link or a PackageInterface. IDEs like PhpStorm won't be able to provide autocompletion since both classes are from a different namespace.

In order to provide better autocompletion for `$reasonData` and by extension `$this->reasonData` the use statements should be included or the type hint should use the fully qualified class name.

For the same reason I added the docblock on the protected method `formatePackagesUnique()`.
2017-08-04 13:00:24 +02:00
Jordi Boggiano 122e422682 CS fixes 2017-03-08 15:16:44 +01:00
rubenrua 8fccbaa4a4 Improve memory usage resolving dependencies II
Optimize `rulesByHash` in `Composer\DependencyResolver\RuleSet` to only
use an array with the second element, event with very low probability.
2017-02-20 18:52:34 +00: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
johnstevenson 379fb70ad9 Use random name for tmp ini and delete after use
Thanks to Patrick Rose for reporting this issue.
2016-11-20 10:59:05 +00:00
Nicolas Grekas daf84bea33 Enhance solver perf by removing count() 2016-10-14 15:56:18 +02:00
Yanick Witschi 7b5fe5c7d4 CS 2016-10-04 10:40:18 +02:00
Yanick Witschi a9e88a27b3 CS 2016-09-30 17:40:28 +02:00
Yanick Witschi 4a769a785c Reduce calls on Rule::getHash() 2016-09-30 17:25:41 +02:00
ReenExe 53fc30fe56 clear code 2016-05-17 13:34:54 +03:00
Lucas CHERIFI 7e34d9ab97 Typo fix ;-) 2016-05-10 21:45:39 +02:00
Jordi Boggiano feda2a283f Improve error reporting some more, fixes #4310 2016-04-18 23:03:00 +01:00
Jordi Boggiano 3b0a1c6f70 Run cs fixer and update config to latest master 2016-04-11 15:06:57 +01:00
Niels Keurentjes 818c3e707a Ton of phpDoc fixes. 2016-04-07 01:12:30 +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
Jordi Boggiano 623c0dcda7 Improve solver error reporting, fixes #5086, fixes #2575, fixes #2661 2016-04-01 00:18:36 +01:00
Niels Keurentjes 8e78ce9a43 Add extra logging before and after SAT solving 2016-03-24 23:19:40 +01:00
Nils Adermann 4af74b54e0 Ignore self references when anlaysing independent root requirements
When creating a transaction we try to identify all requirements that are
not themselves required by any other package. If a package references
itself this should not mark it as being required by another package.
2016-03-02 13:03:26 +01:00
Niels Keurentjes b059cbe37c Removed unused variables and includes, fixed functions being called with more arguments than declared. 2016-02-27 23:21:11 +01:00
Jordi Boggiano c9436438ff Add memoization to parseConstraints, saves some (6-7% here) RAM and marginal CPU time 2016-02-24 17:27:42 +00:00
Niels Keurentjes ebfceefca6 Removed long deprecated functions that were no longer referenced anywhere. 2016-02-15 22:00:54 +01:00
Rob Bast baabc612f6 adjust message, skip test
currently we have no way to put dynamic values or wildcards in EXPECT-OUTPUT
2016-02-05 13:21:30 +01:00
Rob Bast 94daeca57b add test and adjust rule error message 2016-02-05 11:59:05 +01:00
Jefferson Carpenter 8d57c3e743 Update SolverProblemsException.php 2016-01-28 19:56:25 -06:00
Jordi Boggiano 1818b95149 CS fixes 2016-01-26 13:07:18 +00:00
Jordi Boggiano e0ff9598c3 Tweak wording a bit, refs #3177 2016-01-25 22:24:34 +00:00
Radek Benkel 09417cae50 Composer gives .ini hints about missing extensions 2016-01-19 21:02:40 +01:00
Wouter J d0e4c5f71e Use "value" instead of "setting" 2015-12-19 12:15:01 +01:00
Wouter J b156ad0345 Improve error message 2015-12-12 12:19:26 +01:00
Jordi Boggiano f5e0fc14b3 Clarify some error messages, fixes #3770 2015-11-18 18:53:33 +00:00
Jordi Boggiano 125dc62fab Make trigger error visible 2015-10-27 16:11:07 +00:00
Rob Bast 1c7016de45 remove dead code/class 2015-10-13 12:37:15 +02:00
Rob Bast 1bf03e9621 fixed various docblocks and class properties in solver 2015-10-13 12:27:48 +02:00
Rob Bast b523fc0b7b ran fixers 2015-10-13 11:35:51 +02:00
Jordi Boggiano ce08582671 Fix CS 2015-09-28 10:53:24 +01:00
Rob Bast a1427d7fd6 replace all occurences in code and comments 2015-09-24 16:32:36 +02:00
Rob Bast 51ef7b5eef instead of generic be more verbose about possible causes 2015-07-31 10:01:58 +02:00
Rob Bast 77f1d5945f make sure php version errors are less misleading
* determine conflicting version in problem using pool package
* hide version in rule to keep it generic rather than possibly misleading

fixes #4319
2015-07-31 09:58:34 +02:00
Nils Adermann cf1af58514 Use bitwise operators directly in rules instead of get/set Bitfield 2015-07-14 14:24:18 +02:00
Nils Adermann 956035e641 Remove the unnecessary return statements from setters 2015-07-09 19:40:03 +02:00
Nils Adermann f535542fca Use constants with names for bitfield offsets 2015-07-09 18:59:16 +02:00
Nils Adermann 329ab5cf41 Rename blob rule property to bitfield 2015-07-09 18:48:50 +02:00
Nils Adermann 961ea868ac Use an integer bitfield for rule properties instead of a string binary blob 2015-07-09 18:26:31 +02:00
Nils Adermann 6e81f63635 Reduce memory footprint of rules by storing data in blob
Not declaring the job property saves significant amounts of memory as
most rules leave it as null
2015-07-09 17:23:45 +02:00
Nils Adermann c7e1f49e78 Rule hashes are only used in the rule set, so no need to store them 2015-07-08 19:11:59 +02:00
Nils Adermann 15d572da4c Use 4 byte integer from raw md5 instead of 5 hex representation chars
The hash is necessary as comparisons are significantly too slow
otherwise. The old hash function used substr on the hexadecimal
representation of the md5 hash, rather than the raw binary output. This
wastes a significant amount of memory, as each byte can only be used to
store up to 4 bit of information. The new hash has 32bit instead of
20bit and uses only a 4 byte integer instead of a 5 byte string.
2015-07-08 19:11:58 +02:00
Nils Adermann 5b1b96b61e Output the number of rules used in the solver for profiling purposes 2015-07-08 17:57:23 +02:00
Nils Adermann 07e1d227c9 Output the size of the pool after dependency resolution for users 2015-07-07 15:40:26 +02:00
Kunal Mehta f634c6946d Update callers of VersionParser::formatVersion()
Tests were moved to BasePackageTest.
2015-07-02 00:06:56 -07:00
Jordi Boggiano 79f9158fb2 Merge pull request #4192 from localheinz/fix/import
Fix: Add missing imports
2015-06-30 15:38:46 +01:00