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多已是申請不到了