Skip to content
Snippets Groups Projects
Forked from ogs / ogs
Source project has a limited visibility.
  • Dmitri Naumov's avatar
    a1753e6b
    Add selection of precompiled headers · a1753e6b
    Dmitri Naumov authored
    This significantly speeds up total rebuild of the project especially in
    the debug preset where it reaches 30%. In the release configuration most
    of the time is spent in the optimization of the code and header parsing
    improvese only by 5%
    
    The expensive header files were determined by ClangBuildAnalyzer
    https://github.com/aras-p/ClangBuildAnalyzer which requires clang's
    -ftime-trace compiler option.
    
    "master" is 8a0f3b66 and the "precompiled headers" branch is descending directly from it.
    
    Improvement of user time around 984s ^= 36%, system time around 30s ^= 22%, wall clock time around 98s ^= 34%.
    
    ninja -j10  1692.19s user 130.79s system 975% cpu 3:06.80 total
    ninja -j10  1693.08s user 130.55s system 976% cpu 3:06.75 total
    
    ninja -j10  2675.04s user 166.38s system 998% cpu 4:44.44 total
    ninja -j10  2677.04s user 168.18s system 999% cpu 4:44.61 total
    
    Improvement of user time around 1010s ^= 5.6%, system time around 50s ^= 36%, wall clock time around 52s ^= 1.9%.
    
    ninja -j10  16864.30s user 96.46s system 661% cpu 42:42.49 total
    ninja -j10  17044.40s user 97.29s system 643% cpu 44:25.82 total
    
    ninja -j10  17890.56s user 188.18s system 687% cpu 43:48.51 total
    ninja -j10  17863.29s user 132.79s system 679% cpu 44:06.71 total
    
    For debug build because of significant improvement there.
    
    405626 ms: eigen3-src/Eigen/Core (included 689 times, avg 588 ms)
    250368 ms: BaseLib/Error.h (included 675 times, avg 370 ms)
    178942 ms: BaseLib/Logging.h (included 739 times, avg 242 ms)
    168664 ms: MaterialLib/MPL/Property.h (included 228 times, avg 739 ms)
    151512 ms: BaseLib/ConfigTree.h (included 220 times, avg 688 ms)
    148939 ms: googletest-src/googletest/include/gtest/gtest.h (included 190 times, avg 783 ms)
    146104 ms: MathLib/Point3d.h (included 548 times, avg 266 ms)
    143836 ms: MeshLib/Elements/Element.h (included 351 times, avg 409 ms)
    135652 ms: /usr/include/boost/property_tree/ptree.hpp (included 225 times, avg 602 ms)
    123695 ms: MeshLib/Mesh.h (included 415 times, avg 298 ms)
    
    72868 ms: BaseLib/Error.h (included 108 times, avg 674 ms)
    53854 ms: MeshLib/Mesh.h (included 207 times, avg 260 ms)
    51212 ms: MeshLib/Elements/Element.h (included 161 times, avg 318 ms)
    45812 ms: MaterialLib/MPL/Property.h (included 191 times, avg 239 ms)
    45603 ms: MathLib/Point3d.h (included 300 times, avg 152 ms)
    45143 ms: BaseLib/Logging.h (included 118 times, avg 382 ms)
    42384 ms: ProcessLib/Process.h (included 42 times, avg 1009 ms)
    30976 ms: MathLib/LinAlg/GlobalMatrixVectorTypes.h (included 120 times, avg 258 ms)
    29221 ms: iphreeqc-src/src/phreeqcpp/Phreeqc.h (included 62 times, avg 471 ms)
    27882 ms: NumLib/DOF/LocalToGlobalIndexMap.h (included 80 times, avg 348 ms)
    
    Many of the same headers, but the total parsing times went 10-fold down.
    a1753e6b
    History
    Add selection of precompiled headers
    Dmitri Naumov authored
    This significantly speeds up total rebuild of the project especially in
    the debug preset where it reaches 30%. In the release configuration most
    of the time is spent in the optimization of the code and header parsing
    improvese only by 5%
    
    The expensive header files were determined by ClangBuildAnalyzer
    https://github.com/aras-p/ClangBuildAnalyzer which requires clang's
    -ftime-trace compiler option.
    
    "master" is 8a0f3b66 and the "precompiled headers" branch is descending directly from it.
    
    Improvement of user time around 984s ^= 36%, system time around 30s ^= 22%, wall clock time around 98s ^= 34%.
    
    ninja -j10  1692.19s user 130.79s system 975% cpu 3:06.80 total
    ninja -j10  1693.08s user 130.55s system 976% cpu 3:06.75 total
    
    ninja -j10  2675.04s user 166.38s system 998% cpu 4:44.44 total
    ninja -j10  2677.04s user 168.18s system 999% cpu 4:44.61 total
    
    Improvement of user time around 1010s ^= 5.6%, system time around 50s ^= 36%, wall clock time around 52s ^= 1.9%.
    
    ninja -j10  16864.30s user 96.46s system 661% cpu 42:42.49 total
    ninja -j10  17044.40s user 97.29s system 643% cpu 44:25.82 total
    
    ninja -j10  17890.56s user 188.18s system 687% cpu 43:48.51 total
    ninja -j10  17863.29s user 132.79s system 679% cpu 44:06.71 total
    
    For debug build because of significant improvement there.
    
    405626 ms: eigen3-src/Eigen/Core (included 689 times, avg 588 ms)
    250368 ms: BaseLib/Error.h (included 675 times, avg 370 ms)
    178942 ms: BaseLib/Logging.h (included 739 times, avg 242 ms)
    168664 ms: MaterialLib/MPL/Property.h (included 228 times, avg 739 ms)
    151512 ms: BaseLib/ConfigTree.h (included 220 times, avg 688 ms)
    148939 ms: googletest-src/googletest/include/gtest/gtest.h (included 190 times, avg 783 ms)
    146104 ms: MathLib/Point3d.h (included 548 times, avg 266 ms)
    143836 ms: MeshLib/Elements/Element.h (included 351 times, avg 409 ms)
    135652 ms: /usr/include/boost/property_tree/ptree.hpp (included 225 times, avg 602 ms)
    123695 ms: MeshLib/Mesh.h (included 415 times, avg 298 ms)
    
    72868 ms: BaseLib/Error.h (included 108 times, avg 674 ms)
    53854 ms: MeshLib/Mesh.h (included 207 times, avg 260 ms)
    51212 ms: MeshLib/Elements/Element.h (included 161 times, avg 318 ms)
    45812 ms: MaterialLib/MPL/Property.h (included 191 times, avg 239 ms)
    45603 ms: MathLib/Point3d.h (included 300 times, avg 152 ms)
    45143 ms: BaseLib/Logging.h (included 118 times, avg 382 ms)
    42384 ms: ProcessLib/Process.h (included 42 times, avg 1009 ms)
    30976 ms: MathLib/LinAlg/GlobalMatrixVectorTypes.h (included 120 times, avg 258 ms)
    29221 ms: iphreeqc-src/src/phreeqcpp/Phreeqc.h (included 62 times, avg 471 ms)
    27882 ms: NumLib/DOF/LocalToGlobalIndexMap.h (included 80 times, avg 348 ms)
    
    Many of the same headers, but the total parsing times went 10-fold down.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.