Rework Element.dependencies to be more efficient
Description
This reworks Element.dependencies to be more efficient which reduces the total runtime.
Changes proposed in this merge request:
- Rework
Element.dependencies
Benchmarking
These benchmarks have been run on a 6 physical/12 virtual cores machine, with 32Go of DDR4 RAM, and a SATA6 SSD. The machine was running the latest version of fedora 29 as of the 1st of March, and was kept with the minimal running (systemd/NetworkManager/the benchmark). Each run was done 6 times, with the first run of each discarded on essential-stack from http://gitlab.com/jennis/debian-stretch-bst
| step | branch | interpreter | clock_time | max_memory (MB) |
|---|---|---|---|---|
| bst build - 4 builders | bschubert/optimize-dependencies | py37 | 189.65 | 466 |
| master | py37 | 195.32 | 465 | |
| bst build - 8 builders | bschubert/optimize-dependencies | py37 | 178.32 | 466 |
| master | py37 | 188.8 | 465 | |
| bst build - 12 builders | bschubert/optimize-dependencies | py37 | 205.65 | 466 |
| master | py37 | 223.62 | 465 | |
| bst show everything cached | bschubert/optimize-dependencies | py37 | 19.09 | 595 |
| master | py37 | 19.3 | 594 | |
| bst show with cache | bschubert/optimize-dependencies | py37 | 14.01 | 465 |
| master | py37 | 14.32 | 465 | |
| bst show without cache | bschubert/optimize-dependencies | py37 | 27.01 | 444 |
| master | py37 | 27.27 | 444 |