1 |
Hi all, |
2 |
|
3 |
this is the next step into getting rid of backtracking. This patch adds |
4 |
a new function that allows _solve_non_slot_operator_slot_conflicts from |
5 |
the last patch series to solve conflicts caused by built slot operator |
6 |
dependencies. It does this by pulling in alternative packages for the |
7 |
parents of the conflict packages. |
8 |
|
9 |
As always pyflakes, pylint and the tests don't show any error. |
10 |
|
11 |
You may find this patch in my github repo [1]. |
12 |
|
13 |
Here are some numbers for -uDN world. |
14 |
|
15 |
Before the first patch series: |
16 |
* 11 slot conflicts |
17 |
* 5 backtracking steps and fails |
18 |
|
19 |
Current master: |
20 |
* no conflicts |
21 |
* 7 backtracking step and succeeds |
22 |
|
23 |
This patch: |
24 |
* no conflicts |
25 |
* no backtracking required |
26 |
|
27 |
Some times on my system (core2 2 GHz, 4 GB RAM) with hot file system caches. |
28 |
|
29 |
Current master: |
30 |
9:28 |
31 |
|
32 |
Current master with -backtrack=0 (fails to find a solution): |
33 |
1:38 |
34 |
|
35 |
This patch: |
36 |
1:58 |
37 |
|
38 |
|
39 |
As you can see by comparing with the --backtrack=0 case, the new conflict |
40 |
solving abilities cost some time (+18%). This is to be expected as it now |
41 |
has to resolve the dependencies of more packages. |
42 |
|
43 |
Compared to the normal case this is a decrease by 79%. |
44 |
|
45 |
Note that if your system doesn't have any conflict, there shouldn't be any |
46 |
increase in run time. |
47 |
|
48 |
|
49 |
[1] https://github.com/few/fews-portage-branch/tree/no-backtracking-for-rebuilds |