]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Performance optimizations to the sqlite3MallocSize() by requiring the
authordrh <drh@noemail.net>
Thu, 15 Oct 2015 16:20:57 +0000 (16:20 +0000)
committerdrh <drh@noemail.net>
Thu, 15 Oct 2015 16:20:57 +0000 (16:20 +0000)
argument to always be non-NULL.

FossilOrigin-Name: cb65989b0710c65e4df69063b346344fdb1d12c7

manifest
manifest.uuid
src/malloc.c
src/mem1.c
src/mem3.c
src/mem5.c
src/status.c

index 643ff90a2b5c7ea65977be4d407bc6a40c547ebb..cc4c177204cc521f7c54a77cd98e9bc36d86f7f6 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\ssqlite3StatusSet()\sinto\ssqlite3StatusHighwater()\sso\sthat\sonly\sthe\nhighwater\smark\sis\srecorded.\s\sThis\sgives\sa\ssmall\ssize\sreduction\sand\nperformance\simprovement.
-D 2015-10-15T15:28:56.847
+C Performance\soptimizations\sto\sthe\ssqlite3MallocSize()\sby\srequiring\sthe\nargument\sto\salways\sbe\snon-NULL.
+D 2015-10-15T16:20:57.639
 F Makefile.in 2ea961bc09e441874eb3d1bf7398e04feb24f3ee
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 8e42cb55739cd8c12e1fd25401956e2019448f6a
@@ -304,12 +304,12 @@ F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e
 F src/lempar.c d344a95d60c24e2f490ee59db9784b1b17439012
 F src/loadext.c 18586e45a215325f15096821e9c082035d4fb810
 F src/main.c fec97668771438033a7559883401067b139729e1
-F src/malloc.c f2daeddf05f81c2b1cf3949d8c4281618d73f0a9
+F src/malloc.c 3eb27dfe5a440d361d052866e548ddfc2669610d
 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
-F src/mem1.c abe6ee469b6c5a35c7f22bfeb9c9bac664a1c987
+F src/mem1.c 52485a88f22649c3b3b4f3eb15760505d49ccf71
 F src/mem2.c f1940d9e91948dd6a908fbb9ce3835c36b5d83c3
-F src/mem3.c 61c9d47b792908c532ca3a62b999cf21795c6534
-F src/mem5.c 61eeb90134f9a5be6c2e68d8daae7628b25953fb
+F src/mem3.c 8768ac94694f31ffaf8b4d0ea5dc08af7010a35a
+F src/mem5.c c1ab1153bd6443bdf6f71e4213c6fb31221b9eb7
 F src/memjournal.c 3eb2c0b51adbd869cb6a44780323f05fa904dc85
 F src/msvc.h d9ba56c6851227ab44b3f228a35f3f5772296495
 F src/mutex.c 8e45800ee78e0cd1f1f3fe8e398853307f4a085c
@@ -345,7 +345,7 @@ F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
 F src/sqlite3ext.h 4b66e3e3435da4b4c8c83696d0349f0c503b3924
 F src/sqliteInt.h 1d888049aafa4fdeafe7c4152bdf394850313f90
 F src/sqliteLimit.h 216557999cb45f2e3578ed53ebefe228d779cb46
-F src/status.c 3c4be54e8e315c27169b3080c145d1e8c0510e72
+F src/status.c 286f6398a4d2cd1e8ff0771e3d30f8dddb4768ea
 F src/table.c 51b46b2a62d1b3a959633d593b89bab5e2c9155e
 F src/tclsqlite.c d9439b6a910985b7fff43ba6756bcef00de22649
 F src/test1.c 8fff9c5aa63d6490f516d018b70c12a9cb9a4d8a
@@ -1391,7 +1391,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P a61880c223c2229ecc3b4da7e5647eca17f7ddf5
-R 93b47b85dfb060db3756b8ecaab6f06d
+P 6422d223dd10018703c6b083d29a3c35c837fc97
+R 61da1a642f1583d907f58e607b0973a0
 U drh
-Z 7b0d80b3bcf3d2289e08ced4ae20156e
+Z ba2748c928f977ad58dd71b47cc5c10d
index e3343cb24d4e5c178ec620ccefeb0956a3736e24..df5c0f7e9cbe868689bce86de6fd4b5862db9005 100644 (file)
@@ -1 +1 @@
-6422d223dd10018703c6b083d29a3c35c837fc97
\ No newline at end of file
+cb65989b0710c65e4df69063b346344fdb1d12c7
\ No newline at end of file
index f017e1bc09d808da0471170333059dde5c5aa714..7b52661a3ad17394fcb441e695b65f6014c65856 100644 (file)
@@ -411,6 +411,7 @@ int sqlite3MallocSize(void *p){
   return sqlite3GlobalConfig.m.xSize(p);
 }
 int sqlite3DbMallocSize(sqlite3 *db, void *p){
+  assert( p!=0 );
   if( db==0 || !isLookaside(db,p) ){
 #if SQLITE_DEBUG
     if( db==0 ){
@@ -430,7 +431,7 @@ int sqlite3DbMallocSize(sqlite3 *db, void *p){
 sqlite3_uint64 sqlite3_msize(void *p){
   assert( sqlite3MemdebugNoType(p, (u8)~MEMTYPE_HEAP) );
   assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
-  return (sqlite3_uint64)sqlite3GlobalConfig.m.xSize(p);
+  return p ? sqlite3GlobalConfig.m.xSize(p) : 0;
 }
 
 /*
@@ -456,7 +457,7 @@ void sqlite3_free(void *p){
 ** *db->pnBytesFreed.
 */
 static SQLITE_NOINLINE void measureAllocationSize(sqlite3 *db, void *p){
-  *db->pnBytesFreed += sqlite3DbMallocSize(db,p);
+  if( p ) *db->pnBytesFreed += sqlite3DbMallocSize(db,p);
 }
 
 /*
index ec9a4e3a61d18e11a5fa247e543ac6b182d2f59e..da6ae33e4c71b8da9b7dcf501faace27e036f0dd 100644 (file)
@@ -171,11 +171,11 @@ static void sqlite3MemFree(void *pPrior){
 ** or xRealloc().
 */
 static int sqlite3MemSize(void *pPrior){
+  assert( pPrior!=0 );
 #ifdef SQLITE_MALLOCSIZE
-  return pPrior ? (int)SQLITE_MALLOCSIZE(pPrior) : 0;
+  return (int)SQLITE_MALLOCSIZE(pPrior);
 #else
   sqlite3_int64 *p;
-  if( pPrior==0 ) return 0;
   p = (sqlite3_int64*)pPrior;
   p--;
   return (int)p[0];
index 1a1b791f28f8cf3ce4f9a35cdad7b7107568c715..2de028daa936eb6defe843f34fdec75105b12b2e 100644 (file)
@@ -476,7 +476,7 @@ static void memsys3FreeUnsafe(void *pOld){
 */
 static int memsys3Size(void *p){
   Mem3Block *pBlock;
-  if( p==0 ) return 0;
+  assert( p!=0 );
   pBlock = (Mem3Block*)p;
   assert( (pBlock[-1].u.hdr.size4x&1)!=0 );
   return (pBlock[-1].u.hdr.size4x&~3)*2 - 4;
index 1479ddd0d09d69dad6780d40abeebb22bcfa0f67..6bb24e54495dd5aeb7041d2043bc4f2e8f3bc916 100644 (file)
@@ -200,12 +200,11 @@ static void memsys5Leave(void){
 ** works for chunks that are currently checked out.
 */
 static int memsys5Size(void *p){
-  int iSize = 0;
-  if( p ){
-    int i = (int)(((u8 *)p-mem5.zPool)/mem5.szAtom);
-    assert( i>=0 && i<mem5.nBlock );
-    iSize = mem5.szAtom * (1 << (mem5.aCtrl[i]&CTRL_LOGSIZE));
-  }
+  int iSize, i;
+  assert( p!=0 );
+  i = (int)(((u8 *)p-mem5.zPool)/mem5.szAtom);
+  assert( i>=0 && i<mem5.nBlock );
+  iSize = mem5.szAtom * (1 << (mem5.aCtrl[i]&CTRL_LOGSIZE));
   return iSize;
 }
 
index 4c41510a3fb8775eb5f3c995ac4d3a3877b660c1..a7fddf060f1c421728fb79d7343d4abb2144f9f5 100644 (file)
@@ -255,10 +255,10 @@ int sqlite3_db_status(
             + pSchema->idxHash.count
             + pSchema->fkeyHash.count
           );
-          nByte += sqlite3MallocSize(pSchema->tblHash.ht);
-          nByte += sqlite3MallocSize(pSchema->trigHash.ht);
-          nByte += sqlite3MallocSize(pSchema->idxHash.ht);
-          nByte += sqlite3MallocSize(pSchema->fkeyHash.ht);
+          nByte += sqlite3_msize(pSchema->tblHash.ht);
+          nByte += sqlite3_msize(pSchema->trigHash.ht);
+          nByte += sqlite3_msize(pSchema->idxHash.ht);
+          nByte += sqlite3_msize(pSchema->fkeyHash.ht);
 
           for(p=sqliteHashFirst(&pSchema->trigHash); p; p=sqliteHashNext(p)){
             sqlite3DeleteTrigger(db, (Trigger*)sqliteHashData(p));