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