boost::pool 예제 #

boost::pool을 사용한 메모리 풀링.
빈번한 메모리를 사용할때에 유용하다고 판단.

#include <iostream>
#include <string>
using namespace std;

#include <windows.h>
#include <boost/pool/pool.hpp>

class VM
{
public:
    void* operator new(size_t s)
    {
        return bpool.malloc();
    }

    void operator delete(void *p)
    {
        bpool.free(p);
    }

private:
    char sz[100];

private:
    static boost::pool<> bpool;
};

boost::pool<> VM::bpool(sizeof(VM));


class NVM
{
private:
    char sz[100];
};


template <class Ty>
DWORD PoolingTest()
{
    enum { COUNT = 1000, LOOP = 500 };

    DWORD dw = GetTickCount();
    Ty *pArr[LOOP];

    int i, j;
    for (i = 0; i < COUNT; ++i) {
        for (j = 0; j < LOOP; ++j) {
            pArr[j] = new Ty();
        }
        for (j = 0; j < LOOP; ++j) {
            delete pArr[j];
        }
    }

    return GetTickCount() - dw;
}


int main()
{
    cout << "pooling: " << PoolingTest<VM>() << endl;
    cout << "normal: " << PoolingTest<NVM>() << endl;

    cout << "END" << endl;
    cin.get();
    return 0;
}



컴파일 환경
CPU: P3 600 (notebook)
RAM: 320

gcc version 3.4.1 (mingw special)

결과
pooling: 100
normal: 581
END

'Dev > C++' 카테고리의 다른 글

Is Derived - code  (0) 2008.05.01
C++에서 프로퍼티 구현하기  (0) 2008.05.01
STLport 초간단 설치  (1) 2008.05.01
Stroustrup - The real interview  (0) 2008.05.01
qsort vs sort  (0) 2008.05.01

+ Recent posts