內存申請那點事

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

相關文章
相關標籤/搜索