From ac83b4e278fd4081ce8b31fe92ef1cd2ae079432 Mon Sep 17 00:00:00 2001 From: "Lee Thomason (grinliz)" Date: Fri, 1 Feb 2013 09:02:34 -0800 Subject: [PATCH] adjust the size of the memory pools --- tinyxml2.cpp | 10 +++++----- tinyxml2.h | 17 +++++++++++++---- xmltest.cpp | 1 + 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 6b349f0..95c164c 100755 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -1502,11 +1502,11 @@ XMLDocument::~XMLDocument() DeleteChildren(); delete [] _charBuffer; -#if 0 - textPool.Trace( "text" ); - elementPool.Trace( "element" ); - commentPool.Trace( "comment" ); - attributePool.Trace( "attribute" ); +#if 1 + _textPool.Trace( "text" ); + _elementPool.Trace( "element" ); + _commentPool.Trace( "comment" ); + _attributePool.Trace( "attribute" ); #endif #ifdef DEBUG diff --git a/tinyxml2.h b/tinyxml2.h index cf60a58..bd504fc 100755 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -98,9 +98,9 @@ inline int TIXML_SNPRINTF( char* buffer, size_t size, const char* format, ... ) #define TIXML_SSCANF sscanf #endif -static const int TIXML2_MAJOR_VERSION = 1; -static const int TIXML2_MINOR_VERSION = 0; -static const int TIXML2_PATCH_VERSION = 10; +static const int TIXML2_MAJOR_VERSION = 1; +static const int TIXML2_MINOR_VERSION = 0; +static const int TIXML2_PATCH_VERSION = 10; namespace tinyxml2 { @@ -359,7 +359,16 @@ public: return _nUntracked; } - enum { COUNT = 1024/SIZE }; // Some compilers do not accept to use COUNT in private part if COUNT is private + // This number is perf sensitive. 4k seems like a good tradeoff on my machine. + // The test file is large, 170k. + // Release: VS2010 gcc(no opt) + // 1k: 4000 + // 2k: 4000 + // 4k: 3900 21000 + // 16k: 5200 + // 32k: 4300 + // 64k: 4000 21000 + enum { COUNT = (4*1024)/SIZE }; // Some compilers do not accept to use COUNT in private part if COUNT is private private: union Chunk { diff --git a/xmltest.cpp b/xmltest.cpp index 5f7cb30..24a68bd 100644 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -289,6 +289,7 @@ int main( int argc, const char ** argv ) if ( !errorID ) { printf( "Load time=%d\n", loadTime - startTime ); printf( "Delete time=%d\n", deleteTime - loadTime ); + printf( "Total time=%d\n", deleteTime - startTime ); } exit(0); }