Loading CHANGELOG.txt +11 −0 Original line number Original line Diff line number Diff line 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: Loading container_test.cpp 0 → 100644 +131 −0 Original line number Original line Diff line number Diff line #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
CHANGELOG.txt +11 −0 Original line number Original line Diff line number Diff line 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: Loading
container_test.cpp 0 → 100644 +131 −0 Original line number Original line Diff line number Diff line #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(); }