今晚又折腾CDT几个小时,差不多有点思路,就个人的体会归纳一下,说得不对之处,还请大家指正。我的环境是Eclipse3.1.1, CDT 3.0.1, jdk 1.5.0.06, linux fc4, gcc 4.0。别的环境没试过。
CDT有很多性能/内存方面的陷阱,
(1)indexer。CDT的有些功能需要indexer(我也不知道是哪些功能需要它,反正有人这么说),我做过试验,一个500多个cpp文件的项
目的full
indexer大约需要1个小时。CDT安装后,默认indexer是打开的。如果你只写小程序,可以不管它。如果要写中,大型开发,最好关掉它。关掉方
式:选择具体的项目,右键->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++的开发,能够在编程中感
觉到诗一般的魅力。