diff options
author | drh <drh@noemail.net> | 2010-12-20 15:51:58 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2010-12-20 15:51:58 +0000 |
commit | 0b12e7f86035122fbde8f85a9460767c1294ae04 (patch) | |
tree | f6b4b6cf3658cf89dbfdfdf6f2f36e21260d4902 /src/malloc.c | |
parent | 9c88d68988afd24e1ee607deef5531115a2c95f7 (diff) | |
download | sqlite-0b12e7f86035122fbde8f85a9460767c1294ae04.tar.gz sqlite-0b12e7f86035122fbde8f85a9460767c1294ae04.zip |
Add additional DBSTATUS options for measuring the hit and miss rates against
the lookaside memory pool - information useful in tuning the lookaside size.
Currently experimental pending analysis of performance impact.
FossilOrigin-Name: 34613f1dc54c638531ca2f5907b71fbe8841233e
Diffstat (limited to 'src/malloc.c')
-rw-r--r-- | src/malloc.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/malloc.c b/src/malloc.c index 2c7897949..a3a9e0fe2 100644 --- a/src/malloc.c +++ b/src/malloc.c @@ -616,14 +616,20 @@ void *sqlite3DbMallocRaw(sqlite3 *db, int n){ if( db->mallocFailed ){ return 0; } - if( db->lookaside.bEnabled && n<=db->lookaside.sz - && (pBuf = db->lookaside.pFree)!=0 ){ - db->lookaside.pFree = pBuf->pNext; - db->lookaside.nOut++; - if( db->lookaside.nOut>db->lookaside.mxOut ){ - db->lookaside.mxOut = db->lookaside.nOut; + if( db->lookaside.bEnabled ){ + if( n>db->lookaside.sz ){ + db->lookaside.anStat[1]++; + }else if( (pBuf = db->lookaside.pFree)==0 ){ + db->lookaside.anStat[2]++; + }else{ + db->lookaside.pFree = pBuf->pNext; + db->lookaside.nOut++; + db->lookaside.anStat[0]++; + if( db->lookaside.nOut>db->lookaside.mxOut ){ + db->lookaside.mxOut = db->lookaside.nOut; + } + return (void*)pBuf; } - return (void*)pBuf; } } #else |