MemPage bitfield patch below. 

sizeof(MemPage) on Linux: 

  original: 84
  patched:  76

Patched "make test" runs without regressions on Linux and Windows.
Timings for "make test" (elapsed):

  original: 1:20.74
  patched:  1:20.22

Size of sqlite3.o when compiled from almalogmation with all 
sqlite features enabled with gcc flags -O3 -fomit-frame-pointer:

  original: 586976 bytes
  patched:  587880 bytes

Patched sqlite3.o is 904 bytes larger. 

Break-even for memory is 904/8 = 113 MemPage structs allocated.


Index: src/btreeInt.h
===================================================================
RCS file: /sqlite/sqlite/src/btreeInt.h,v
retrieving revision 1.4
diff -u -3 -p -r1.4 btreeInt.h
--- src/btreeInt.h      16 May 2007 17:28:43 -0000      1.4
+++ src/btreeInt.h      30 May 2007 16:26:03 -0000
@@ -269,15 +269,15 @@ typedef struct BtLock BtLock;
 */
 struct MemPage {
   u8 isInit;           /* True if previously initialized. MUST BE FIRST! */
-  u8 idxShift;         /* True if Cell indices have changed */
   u8 nOverflow;        /* Number of overflow cell bodies in aCell[] */
-  u8 intKey;           /* True if intkey flag is set */
-  u8 leaf;             /* True if leaf flag is set */
-  u8 zeroData;         /* True if table stores keys only */
-  u8 leafData;         /* True if tables stores data on leaves only */
-  u8 hasData;          /* True if this page stores data */
-  u8 hdrOffset;        /* 100 for page 1.  0 otherwise */
-  u8 childPtrSize;     /* 0 if leaf==1.  4 if leaf==0 */
+  u8 hdrOffset:7;        /* 100 for page 1.  0 otherwise */
+  u8 zeroData:1;         /* True if table stores keys only */
+  u8 childPtrSize:3;     /* 0 if leaf==1.  4 if leaf==0 */
+  u8 leaf:1;             /* True if leaf flag is set */
+  u8 idxShift:1;         /* True if Cell indices have changed */
+  u8 intKey:1;           /* True if intkey flag is set */
+  u8 leafData:1;         /* True if tables stores data on leaves only */
+  u8 hasData:1;          /* True if this page stores data */
   u16 maxLocal;        /* Copy of Btree.maxLocal or Btree.maxLeaf */
   u16 minLocal;        /* Copy of Btree.minLocal or Btree.minLeaf */
   u16 cellOffset;      /* Index in aData of first cell pointer */



 
____________________________________________________________________________________
Be a PS3 game guru.
Get your game face on with the latest PS3 news and previews at Yahoo! Games.
http://videogames.yahoo.com/platform?platform=120121

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to