📄 test_alloc.cpp
字号:
///
///
#ifdef _DEBUG
//#include "vld.h"
#endif
#include "kl_cmempool.h"
#include "kl_allocator.h"
#include <vector>
#include <list>
#include <iostream>
#include <cstdlib>
#include "timer.h"
struct Node
{
char _s[100];
Node()
{
_s[0] = 0;
}
};
typedef std::vector<int> DefaultVector;
typedef std::vector<int, kl_common::allocator<int> > MPVector;
typedef std::list<int> DefaultList;
typedef std::list<int, kl_common::allocator<int> > MPList;
typedef std::list<Node> DefaultNodeList;
typedef std::list<Node, kl_common::allocator<Node> > MPNodeList;
template <typename _Tp, typename _Value>
void construct( _Tp &con, const _Value &val, const int size )
{
for( int i = 0; i < size; ++ i )
{
con.push_back( val );
}
}
int main()
{
timer t;
std::cout.precision( 10 );
/*
pure c memory pool testing. large memory allcation.
*/
cmMemoryPool mp;
mp = cmCreate( 128, 2048 );
const int psize = 1000;
t.elapsed();
for( int i = 0; i < psize; ++ i )
{
void *p = malloc( 1024 );
free( p );
}
std::cout << "malloc/free 1024 bytes for " << psize << " times, used time : " << t.elapsed() << std::endl;
t.elapsed();
for( int i = 0; i < psize; ++ i )
{
void *p = cmAllocate( &mp, 1024 );
cmDeallocate( &mp, p, 1024 );
}
std::cout << "cmAllocate/cmDeallocate 1024 bytes for " << psize << " times, used time : " << t.elapsed() << std::endl;
cmRelease( &mp );
/*
stl allocator testing.
*/
t.elapsed();
DefaultVector def_con;
construct( def_con, 1, 200 );
std::cout << "Construction vector[200int] [default allocator] : " << t.elapsed() << std::endl;
t.elapsed();
MPVector mp_con;
construct( mp_con, 1, 200 );
std::cout << "Construction vector[200int] [memory pool allocator] : " << t.elapsed() << std::endl;
t.elapsed();
DefaultList def_list;
construct( def_list, 1, 50000 );
std::cout << "Construction list[50000int] [default allocator] : " << t.elapsed() << std::endl;
t.elapsed();
MPList mp_list;
construct( mp_list, 1, 50000 );
std::cout << "Construction list[50000int] [memory pool allocator] : " << t.elapsed() << std::endl;
t.elapsed();
DefaultNodeList def_node_list;
construct( def_node_list, Node(), 50000 );
std::cout << "Construction list[50000Node] [default allocator] : " << t.elapsed() << std::endl;
t.elapsed();
MPNodeList mp_node_list;
construct( mp_node_list, Node(), 50000 );
std::cout << "Construction list[50000Node] [memory pool allocator] : " << t.elapsed() << std::endl;
#ifndef _DEBUG
system( "pause" );
#endif
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -