add container_test
This commit is contained in:
parent
9d080b0868
commit
00052a60c9
|
@ -1,9 +1,20 @@
|
||||||
|
|
||||||
|
2012-Jan-5 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
================================================================================
|
||||||
|
++all
|
||||||
|
Ki_PageDescr was re-written as a proper C++ class and renamed to PAGE_INFO.
|
||||||
|
It describes paper. The m_Offset field was dropped since it was only used
|
||||||
|
in HPGL plotting within EESCHEMA. PAGE_INFO instance was moved out of
|
||||||
|
BASE_SCREEN (which is on its way out) into both SCH_SCREEN and BOARD.
|
||||||
|
|
||||||
|
|
||||||
KiCad ChangeLog 2011
|
KiCad ChangeLog 2011
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
|
||||||
2011-Dec-19, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
2011-Dec-19, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
Pcbnew:
|
Pcbnew:
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
|
||||||
|
#include <base_struct.h>
|
||||||
|
#include <boost/ptr_container/ptr_vector.hpp>
|
||||||
|
#include <deque>
|
||||||
|
#include <dlist.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define TEST_NODES 100000000
|
||||||
|
|
||||||
|
|
||||||
|
//typedef std::vector<EDA_ITEM*> EDA_ITEMV;
|
||||||
|
//typedef std::deque<EDA_ITEM*> EDA_ITEMV;
|
||||||
|
typedef boost::ptr_vector<EDA_ITEM> EDA_ITEMV;
|
||||||
|
|
||||||
|
|
||||||
|
void heap_warm_up();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetRunningMicroSecs
|
||||||
|
* returns current relative time in microsecs.
|
||||||
|
*/
|
||||||
|
unsigned GetRunningMicroSecs()
|
||||||
|
{
|
||||||
|
struct timespec now;
|
||||||
|
|
||||||
|
clock_gettime( CLOCK_MONOTONIC, &now );
|
||||||
|
|
||||||
|
unsigned usecs = now.tv_nsec/1000 + now.tv_sec * 1000 * 1000;
|
||||||
|
return usecs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main( int argc, char** argv )
|
||||||
|
{
|
||||||
|
EDA_ITEMV v;
|
||||||
|
DLIST<EDA_ITEM> dlist;
|
||||||
|
|
||||||
|
unsigned vAllocStart;
|
||||||
|
unsigned vAllocStop;
|
||||||
|
unsigned vIterateStart;
|
||||||
|
unsigned vIterateStop;
|
||||||
|
|
||||||
|
unsigned dAllocStart;
|
||||||
|
unsigned dAllocStop;
|
||||||
|
unsigned dIterateStart;
|
||||||
|
unsigned dIterateStop;
|
||||||
|
|
||||||
|
heap_warm_up();
|
||||||
|
|
||||||
|
vAllocStart = GetRunningMicroSecs();
|
||||||
|
|
||||||
|
for( int i=0; i<TEST_NODES; ++i )
|
||||||
|
{
|
||||||
|
v.push_back( new EDA_ITEM( NOT_USED ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
vAllocStop = GetRunningMicroSecs();
|
||||||
|
vIterateStart = vAllocStop;
|
||||||
|
|
||||||
|
for( EDA_ITEMV::const_iterator it = v.begin(); it != v.end(); ++it )
|
||||||
|
{
|
||||||
|
if( it->Type() == -22 )
|
||||||
|
{
|
||||||
|
printf( "never this\n" );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vIterateStop = GetRunningMicroSecs();
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
for( int i=0; i<TEST_NODES; ++i )
|
||||||
|
{
|
||||||
|
delete v[i];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
v.clear();
|
||||||
|
|
||||||
|
|
||||||
|
dAllocStart = GetRunningMicroSecs();
|
||||||
|
|
||||||
|
for( int i=0; i<TEST_NODES; ++i )
|
||||||
|
{
|
||||||
|
dlist.PushBack( new EDA_ITEM( NOT_USED ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
dAllocStop = GetRunningMicroSecs();
|
||||||
|
dIterateStart = dAllocStop;
|
||||||
|
|
||||||
|
for( const EDA_ITEM* it = dlist; it; it = it->Next() )
|
||||||
|
{
|
||||||
|
if( it->Type() == -22 )
|
||||||
|
{
|
||||||
|
printf( "never this\n" );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dIterateStop = GetRunningMicroSecs();
|
||||||
|
|
||||||
|
printf( "vector alloc: %u usecs iterate: %u usecs\n",
|
||||||
|
vAllocStop - vAllocStart,
|
||||||
|
vIterateStop - vIterateStart );
|
||||||
|
|
||||||
|
printf( "dlist alloc: %u usecs iterate: %u usecs\n",
|
||||||
|
dAllocStop - dAllocStart,
|
||||||
|
dIterateStop - dIterateStart );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void heap_warm_up()
|
||||||
|
{
|
||||||
|
// dry run allocate enough object for process to obtain all memory needed
|
||||||
|
|
||||||
|
EDA_ITEMV vec;
|
||||||
|
|
||||||
|
for( int i=0; i<TEST_NODES; ++i )
|
||||||
|
{
|
||||||
|
vec.push_back( new EDA_ITEM( NOT_USED ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
for( int i=0; i<TEST_NODES; ++i )
|
||||||
|
{
|
||||||
|
// delete vec[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
vec.clear();
|
||||||
|
}
|
Loading…
Reference in New Issue