【发布时间】:2013-08-01 21:44:33
【问题描述】:
我们有一个庞大的代码库,多年来已成功使用 boost::signals。我们最近迁移到 boost v1.54,并决定由于 boost::signals 已被弃用,我们将切换到 boost::signals2。
我们看到的问题是编译时间非常可怕。例如,一个小的 .cpp 文件现在需要 20 多秒,而过去需要 4 秒。
同样,我们的一个库(大型)过去需要大约 10 分钟才能生成,现在需要长达一个小时。我到处搜索有关如何通过预编译的头文件、宏等来改进这一点的文档,但还没有找到任何可以大大改善这种情况的东西。
在 procmon 中查看 cl.exe 会发现 boost::signals2 和 mpl 库中有大量 IO。
此时我们不需要信号2 提供的线程安全性,我们即将拔掉“升级”的插头并恢复为信号。在我们放弃之前,是否有人对此有任何建议或经验?
我们正在使用具有大量 RAM/磁盘/等的 VS2012。
【问题讨论】:
-
你使用的是预编译头文件吗?
-
Signals2 使用可变参数模板,它们在 VS2012 中以高成本进行仿真。已在 VS2013 中修复。从 Boost 适应到 VS2013 登陆你的桌面,给它几个月的时间。
-
@HansPassant 感谢您提供的信息,我没有考虑过。鉴于我们等待 VS2013 是不可行的,您认为恢复信号库的最佳做法是什么?就像现在一样,由于编译速度慢,代码无法使用。
-
你已经知道答案了,问我也没用。我的建议物有所值。
-
您能否提供一些代码来说明您如何使用信号?我们的项目使用 boost::signals2 并且我们被困在 VS2005 上,我还没有遇到这个问题。我们正在使用预编译的头文件。
标签: c++ performance boost visual-studio-2012 compilation