Eclipse CDT開發C 速度慢的解決方案

來源:互聯網
上載者:User
Eclipse CDT開發C++速度慢的解決方案

Eclipse/CDT速度慢,佔用記憶體大的問題的可用解決方案
今晚又折騰CDT幾個小時,差不多有點思路,就個人的體會歸納一下,說得不對之處,還請大家指正。我的環境是Eclipse3.2.2, CDT 3.1.2,

jdk 1.5.0.10,

CDT有很多效能/記憶體方面的陷阱,
(1)indexer。CDT的有些功能需要indexer(我也不知道是哪些功能需要它,反正有人這麼說)

CDT安裝後,預設indexer是開啟的,今天寫一個HELLO world的小程式,運行了差不多一分多鐘,

關掉方式:選擇具體的項目,右鍵->properties->C/C++ Indexer,選擇No Indexer。或者一安裝CDT外掛程式,就在Windows->Preferences-

>C/C++->Indexer中,選擇No Indexer。

(2)CDT預設有個選項"Follow #include's when parsing working copies"是選中的,當你開啟一個源檔案時,該檔案include的所有檔案它

都要解析一遍。影響了速度。關掉這個選項後,CDT開發就和java開發速度上感覺不出來差別了。關掉方法:Windows->Preferences->C/C++->

去掉"Follow......" 那項。

(3)關掉(2)中所說的那個選項可能會影響到smart insert,也就是自動提示功能。CDT(至少在我的環境下)這裡有一個巨大無比的Bug,

就是對include檔案的解析經常出現問題。如果選中(2)中所說的那個選項,許多檔案的解析不完整(從右邊outline那裡可以發現),不知道

它怎麼解析的,反正usr/include中許多標頭檔都解析不成功。單是解析不成功還好啊,問題是,一旦你編輯include這些檔案的源檔案,一旦

你輸入了.,->,或::,哈哈哈哈,等等吧,至少5分鐘才會出結果,然後你的記憶體耗用會增加100M以上,如果再打一個這三個東東,再次等待,

再次記憶體流失。google上有人問,cdt咋占我1G的記憶體呢?選中(2)那個選項還有一個問題,就是泛型解析不出來。關掉(2)中的那個選項,

會發現,outline中源檔案的解析完全正確。不過,記憶體流失還是會出現,這時需要關掉Auto activation一項。關掉後就沒問題了,只是不能

自動提示/完成成員項了。關掉方法:Windows->Preferences-> C/C++->Editor->Code Assist,把Auto activation下面3個框中的勾去掉。

這樣效能表現差不多就和JDT差不多了。代價是不能使用自動提示/完成這一現代IDE的準系統。但是,和Linux環境下其它IDE相比,

Eclipse/CDT在介面,易用性方面要強太多。例如UI的人性化,代碼閱讀,代碼模板,與SVN/CVS的整合,這時偶喜歡CDT的幾點。

最後來點煽情的:

Eclipse書商有一句話:Eclipse顛倒Java眾生。其實,何止Java眾生,連不成熟的CDT都迷倒了許多人。象偶這種以前用. net/C#,同時極度討

厭C++的人,便因為eclipse及其易用性上的設計,還有相關的文化而開始喜歡上了Java和C++的開發,能夠在編程中感覺到詩一般的魅力。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.