template<class dicttype>
bool FX::QDictByMemLoadResize ( dicttype &  dict,
const char *  file = 0,
int  lineno = 0 
) [inline]

Definition at line 536 of file qdictbase.h.

References fx2powerprimes(), fxmessage(), and FX::FXProcess::memoryFull().

00537 {
00538     FXuint memload=FXProcess::memoryFull(), dictcount=dict.count(), dictsize=dict.size();
00539     FXuint newsize=dictsize;
00540     if(dictcount<=16+48*dicttype::HasSlowKeyCompare
00541 #ifndef FXDISABLE_QDICTSLOWINSERTSOPT
00542         || dict.dictionaryBias()<16 /* slush factor */)
00543 #else
00544         )
00545 #endif
00546     {   // Better performance if we leave it purely to std::map
00547         newsize=1;
00548     }
00549     else if(memload || dictcount>=dictsize/2 || (dictsize>=15 && dictcount<=dictsize/4))
00550     {   // 15*(4+4+12+4)=15*24=360 bytes
00551         const FXuint *primes=fx2powerprimes(dictcount*2);
00552         newsize=primes[memload];
00553     }
00554     if(newsize!=dictsize)
00555     {
00556 #ifdef DEBUG
00557         fxmessage("QDICTDYNRESIZE at %s:%d resizing %p from %u to %u (load %d)\n", file, lineno, &(dict), dictsize, newsize, memload);
00558 #endif
00559         dict.safeResize(newsize);
00560         return true;
00561     }
00562     return false;
00563 }


(C) 2002-2009 Niall Douglas. Some parts (C) to assorted authors.
Generated on Fri Nov 20 18:32:27 2009 for TnFOX by doxygen v1.4.7