我有根状态机有大约40个转换(包括四个子状态机器).一切运作良好,但是当我开始提高转换次数时,编译时间显着增加(大型状态机的开发变得地狱).我尝试使用boost :: msm :: back :: favor_compile_time策略,并将子机器拆分为多个翻译单元,但它没有效果.有人对这个问题有一些解决方法吗?
Boost – 1.53,编译器 – MSVC 2012,处理器 – Intel i7
Upd:减少时间的最佳方法 – 从项目中删除boost msm
最佳答案
“but it does not have effect”
我认为这个想法是,拆分TU可以加快速度/因为/你并不总是需要重建TU,不一定是干净的重建会更快.
实际上,我希望(非并行化)构建对于更多TU来说会更慢,因为每个TU最终会在头文件中包含99%的相同代码.预编译的头文件可以稍微减轻这种情况.
在这方面,将相关标头(和预处理器#defines)添加到stdafx可能会有所帮助.