MiniTimer m_timer; m_timer.init(); m_timer.Start(); for(int n =0 ;n < 200 ;++n) { Vertex* meshData = new Vertex[1000]; } double usetime = m_timer.getTime(); printf("New Large Memory :%f \n",usetime); m_timer.Start(); for(int n =0 ;n < 2000 ;++n) { Vertex* meshData = new Vertex[100]; } double usetime2 = m_timer.getTime(); printf("New Low Memory :%f \n",usetime2); m_timer.Start(); for(int n =0 ;n < 20000 ;++n) { Vertex* meshData = new Vertex[10]; } double usetime3 = m_timer.getTime(); printf("New varySmall mem:%f \n",usetime3);
1.内存申请的总容量都同样,可是小块的数量不同,结果如何?windows
结果是内存块越小,花费的时间越多spa
分别是:code
0.0083(秒)blog
0.0090(秒)内存
0.01934(秒)get
2.若是申请的内存一个是大块,一个是小块,哪一个更快?it
MiniTimer m_timer; m_timer.init(); m_timer.Start(); for(int n =0 ;n < 200 ;++n) { Vertex* meshData = new Vertex[1000]; } double usetime = m_timer.getTime(); printf("New Large Memory :%f \n",usetime); m_timer.Start(); for(int n =0 ;n < 200 ;++n) { Vertex* meshData = new Vertex[100]; } double usetime2 = m_timer.getTime(); printf("New Low Memory :%f \n",usetime2); m_timer.Start(); for(int n =0 ;n < 200 ;++n) { Vertex* meshData = new Vertex[10]; } double usetime3 = m_timer.getTime(); printf("New varySmall mem:%f \n",usetime3);
显然小块的速度更快。class
花费时间分别为:im
0.0076(秒)总结
0.00076(秒)
0.000217(秒)
总结: 若是无可改变的要申请的大块内存,就不要分开几个小块申请,内存块越小,速度越快 ,若是你用内存池,那这些都是废话了
分割线-------------------------------------------------------------------------------------------------------------------------------------------------------
2017-5-25
3.windows最大申请内存他会限制到 大约2G
可是1G多已是申请不到了