aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/scriptclasspropertyiterator.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix size_t / int conversion warningJoerg Bornemann2018-02-281-1/+1
| | | | | Change-Id: Ida9c9e62eaacb9314c7a620a8b4d7ea6d76073e9 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Re-use product, module and project script valuesChristian Kandeler2018-01-261-0/+110
These script values were set up from scratch not only for every rule, but also when creating the dependencies array. As a result, a rule traversing the dependencies of a product recursively would potentially create a huge amount of identical script values for modules appearing more than once in the dependency graph, such as the qbs module. See the benchmark data below for how the performance degraded with the size of the project. Instead, we now re-use these values, which stay valid throughout the lifetime of the script engine. For prepare scripts, that's the same as the lifetime of the executor. As a side effect, this also gives us change tracking for accesses to product and module properties via the dependencies array. These were completely unobserved before. Benchmarker result using qbs as the test project: ========== Performance data for Rule Execution ========== Old instruction count: 3265471304 New instruction count: 2733833913 Relative change: -17 % Old peak memory usage: 19023592 Bytes New peak memory usage: 19871640 Bytes Relative change: +4 % Benchmarker result using Qt Creator as the test project: ========== Performance data for Rule Execution ========== Old instruction count: 318848392341 New instruction count: 75056789023 Relative change: -77 % Old peak memory usage: 248922136 Bytes New peak memory usage: 258454408 Bytes Relative change: +3 % Change-Id: Id69062eea4dd8f9c7153599610c52bf4ea986464 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>