我们的编译时间非常慢,在双核 2GHz、2G Ram 机器上可能需要超过 20 分钟。
这在很大程度上是由于我们解决方案的规模已经增长到 70 多个项目,以及当您拥有大量文件时 VSS 本身就是一个瓶颈。(不幸的是,换掉 VSS 不是一种选择,所以我不希望它下降到 VSS bash 中)
我们正在考虑合并项目。我们还在寻找多种解决方案来实现更大的关注点分离和更快的应用程序每个元素的编译时间。当我们试图保持同步时,我可以看到这将成为一个 DLL 地狱。
我很想知道其他团队是如何处理这个扩展问题的,当你的代码库达到临界质量时你会怎么做,而你浪费了半天时间看状态栏传递编译消息。
更新 我没有提到这是一个 C# 解决方案。感谢所有 C++ 建议,但几年前我不得不担心标题。
编辑:
到目前为止有帮助的好建议(并不是说下面没有其他好的建议,只是有帮助)
- 新的 3GHz 笔记本电脑 - 在向管理人员求助时,失去利用率的力量会产生奇迹
- 在编译期间禁用反病毒
- 在编译期间与 VSS(实际上是网络)“断开连接” - 我可能会让我们完全删除 VS-VSS 集成并坚持使用 VSS UI
仍然没有通过编译进行 rip-snorting,但每一点都有帮助。
Orion 在评论中确实提到泛型也可能有作用。从我的测试来看,似乎对性能的影响很小,但还不够高,无法确定 - 由于磁盘活动,编译时间可能不一致。由于时间限制,我的测试没有像在实时系统中出现那样多的泛型或代码,因此可能会累积。我不会避免在应该使用泛型的地方使用它们,只是为了编译时性能
解决方法
我们正在测试在新解决方案中构建应用程序新区域的做法,根据需要导入最新的 dll,当我们对它们感到满意时,它们会将它们集成到更大的解决方案中。
我们也可以通过创建临时解决方案来对现有代码做同样的事情,这些解决方案只是封装了我们需要处理的区域,并在重新集成代码后将它们丢弃。我们需要权衡重新集成此代码所需的时间与我们在开发过程中没有像 Rip Van Winkle 那样的快速重新编译经验所获得的时间。