2008-09-01 40 views
4

我目前正在研究一个相当庞大的库(5M行代码,C++在VS2005下,1个解决方案和近100个项目)。尽管我们分发编译,并使用增量链接,但在修改小的源代码后,重新编译和重新链接需要几分钟(通常至少3次)和接近1小时。在大型图书馆工作的技巧?

这意味着我们的修改代码/构建/调试周期往往很长(根据我的口味!),并且在构建过程中很容易失去'流':通常没有太多时间去做任何有用的事情(也许会做一些电子邮件,或者阅读一些在线的文章或者一本书的几页)。

在编写新代码或进行重大重构时,我只尝试一次只编译一个文件。但是,在调试过程中,它真的让我紧张!

我想知道如何优化我的时间?我想我不是唯一一个那种情况:你会做什么

回答

1

我对这个级别的开发了解不多,但是......看起来分离成多个解决方案似乎是个好主意。如果您/您的客户真的坚持,您可以进行最后的“预装”步骤,将它们整合到一个.dll文件中。

比较,例如,我们有很多不同的程序集(系统,System.Drawing,System.Windows.Forms,System.Xml ...)的.NET Framework。据推测,所有这些都可能在不同的解决方案中,引用彼此的构建结果(而不是所有的单一解决方案,相互引用项目)。

0

@Domenic:事实上,这将是一件好事...然而,整个团队已经有一段时间了,直到他们成功了,我们被困在一个单一的.dll和一些非常单一的东西:-(

1

步步...

唯一的解决办法是启动隔离的代码块。如果你没有太多的实现泄漏(见下文**),然后开始构建背后隔离类fachades 。将这些句柄移到不同的项目,并使启动时加载dll,并将调用重定向到工厂方法。

重点查找相当稳定的区域/库,并将它们分割为独立的库dll。分别构建和版本化将帮助您避免集成的难题。

我一直在这种情况过去,唯一的方法就是耐心地完成任务。

顺便说一下,分离代码的好的副作用是接口变得更干净,输出dll的大小更小!!在我们的项目中,增加/重新组织代码并减少无偿用量包括将最终产出减少30%。

祝你好运! - > GetMemberZ() - > GetMemberYT-> GiveMeTheData(param1,param2)