Re: Re: [cpp] C++ Map 在32位模式下最大容限是多少?

李慧霸 magazine.lihuiba at 163.com
Sun Mar 23 20:45:47 CST 2008


>一般情况下,STL实现红黑树时会线索化二叉树,这样子就又增加了标志域。如果采用64位的OS的话,每个指针也都是64位了,这样就业得不偿失了。另外关于64位的系统int,long这些和32的不太一样。而且每个之间又有差别,这样跨平台的话,可能以前的代码就需要做很多修改了。

如果当前算法在32bit平台上跑不了,最好的办法还是研究问题,改进算法,这也是我前面表示的观点。
至于移植问题,可以仅仅把map部分移植为64位的,然后进行跨进程的协作(如进程外COM)。
指针overhead问题确实没办法解决,但如果payload比较大,就能够得到缓解。


我没有读过stl的实现,不过以前在一个项目中用vc2003中做过测试,结果如下:
&# 8220;
	//18625(1000):插入100w个节点(11个索引)信息只需要不到20s,平均每个0.02ms(@P4 3GHz)
	//1M个节点总共占用约750M内存
&# 8221;
其中每个&# 8220;索引&# 8221;就是一个map,模板参数比较复杂,不详细将了,但结果表名,向11个map里各插入100万
个节点,总共占了大约750M内存(任务管理器看的进程占用)。

------------------				 
李慧霸
2008-03-23




More information about the Cpp mailing list