Replies: 5 comments
-
Regarding header includes Furthermore, quite a significant amount of time is spent on standard headers. My experiments show that precompiled headers are a solution here and can speed up the overall compilation from around 8 to around 6 minutes! :-) Quite some files include the expression-evaluator, which includes exprtk.h (700ms). Finally, every file that includes logging includes the filesystem header (also 100ms) as l3pp is a header-only library. I think that we may want to move the implementation of file handling to a dedicated file. Regarding instantiations Regarding unity builds Regarding storm-pars and tests Another issue seems to be the use of carl::formula. However, we hardly use them and the use-cases for them are mostly gone, so I would argue to switch to storm::expressions. Regardint tests |
Beta Was this translation helpful? Give feedback.
-
Precompiled header support: #451 |
Beta Was this translation helpful? Give feedback.
-
Significant include optimisations for tests and libraries: #450 |
Beta Was this translation helpful? Give feedback.
-
Instantiations for json objects are significantly reduced by: #459 |
Beta Was this translation helpful? Give feedback.
-
Just for (my) documentation:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Generally, we are still fighting relatively long compile times despite major efforts to reduce them. I wanted to open this issue for some time to push us to improve here a bit further.
Earlier today, I generated a ninjatrace for building storm, completely, as a release build. This took 8m20s on my laptop, running 8 threads in parallel.
I attach the file here, you can open it in chrome://tracing to inspect it yourself. I also attach a screenshot
trace.json

You can see that on storm-main, many files actually compile rather quickly, however, towards the later stages, compile times increase drastically. I believe that this effect is mostly due to earlier efforts to reduce the compile times of often-recompiled parts.
I inspected one file, CtmcCslModelCheckerTest.cpp. This file took a whopping 30 seconds to compile. Why? With clang-profiling (see our Cmake option to enable this), it turned out that around 23s were due to including FormulaParser.h and PrismParser.h. There was a simple improvement to compile this file in 7 seconds rather than in 30: Do not include these two files. The code still compiles.
Beta Was this translation helpful? Give feedback.
All reactions