2008-09-01 41 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)