aboutsummaryrefslogtreecommitdiff
path: root/src/malloc.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2010-12-20 15:51:58 +0000
committerdrh <drh@noemail.net>2010-12-20 15:51:58 +0000
commit0b12e7f86035122fbde8f85a9460767c1294ae04 (patch)
treef6b4b6cf3658cf89dbfdfdf6f2f36e21260d4902 /src/malloc.c
parent9c88d68988afd24e1ee607deef5531115a2c95f7 (diff)
downloadsqlite-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.c20
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