今晚又折騰CDT幾個小時,差不多有點思路,就個人的體會歸納一下,說得不對之處,還請大家指正。我的環(huán)境是Eclipse3.1.1, CDT 3.0.1, jdk 1.5.0.06, linux fc4, gcc 4.0。別的環(huán)境沒試過。
CDT有很多性能/內(nèi)存方面的陷阱,
(1)indexer。CDT的有些功能需要indexer(我也不知道是哪些功能需要它,反正有人這么說),我做過試驗,一個500多個cpp文件的項目的full indexer大約需要1個小時。CDT安裝后,默認(rèn)indexer是打開的。如果你只寫小程序,可以不管它。如果要寫中,大型開發(fā),最好關(guān)掉它。關(guān)掉方式:選擇具體的項目,右鍵->properties->C/C++ Indexer,選擇No Indexer。或者一安裝CDT插件,就在Windows->Preferences->C/C++->Indexer中,選擇No Indexer。
(2)CDT默認(rèn)有個選項"Follow #include's when parsing working copies"是選中的,當(dāng)你打開一個源文件時,該文件include的所有文件它都要解析一遍。影響了速度。關(guān)掉這個選項后,CDT開發(fā)就和java開發(fā)速度上感覺不出來差別了。關(guān)掉方法:Windows->Preferences->C/C++->去掉"Follow......" 那項。
(3)關(guān)掉(2)中所說的那個選項可能會影響到smart insert,也就是自動提示功能。CDT(至少在我的環(huán)境下)這里有一個巨大無比的Bug,就是對include文件的解析經(jīng)常出現(xiàn)問題。如果選中(2)中所說的那個選項,許多文件的解析不完整(從右邊outline那里可以發(fā)現(xiàn)),不知道它怎么解析的,反正usr/include中許多頭文件都解析不成功。單是解析不成功還好啊,問題是,一旦你編輯include這些文件的源文件,一旦你輸入了.,->,或::,哈哈哈哈,等等吧,至少5分鐘才會出結(jié)果,然后你的內(nèi)存耗用會增加100M以上,如果再打一個這三個東東,再次等待,再次內(nèi)存泄漏。google上有人問,cdt咋占我1G的內(nèi)存呢?選中(2)那個選項還有一個問題,就是泛型解析不出來。關(guān)掉(2)中的那個選項,會發(fā)現(xiàn),outline中源文件的解析完全正確。不過,內(nèi)存泄漏還是會出現(xiàn),這時需要關(guān)掉Auto activation一項。關(guān)掉后就沒問題了,只是不能自動提示/完成成員項了。關(guān)掉方法:Windows->Preferences-> C/C++->Editor->Code Assist,把Auto activation下面3個框中的勾去掉。
這樣性能表現(xiàn)差不多就和JDT差不多了。代價是不能使用自動提示/完成這一現(xiàn)代IDE的基本功能。但是,和Linux環(huán)境下其它IDE相比, Eclipse/CDT在界面,易用性方面要強(qiáng)太多。例如UI的人性化,代碼閱讀,代碼模板,與SVN/CVS的集成,這時偶喜歡CDT的幾點。
最后來點煽情的:
Eclipse書商有一句話:Eclipse顛倒Java眾生。其實,何止Java眾生,連不成熟的CDT都迷倒了許多人。象偶這種以前用. net/C#,同時極度討厭C++的人,便因為eclipse及其易用性上的設(shè)計,還有相關(guān)的文化而開始喜歡上了Java和C++的開發(fā),能夠在編程中感覺到詩一般的魅力。