Minor performance enhancements to SQLITE_ENABLE_STMT_SCANSTATUS code.

FossilOrigin-Name: f13d6ba8a72d75838c4aaf85326c1129da027f8b
This commit is contained in:
dan 2014-11-01 21:00:04 +00:00
parent 6f9702ed4d
commit 43764a8efb
6 changed files with 17 additions and 17 deletions

View File

@ -1,5 +1,5 @@
C If\sSQLITE_ENABLE_STMT_SCANSTATUS\sis\sdefined,\srecord\sthe\snumber\sof\stimes\seach\sVDBE\sopcode\sis\sexecuted.\sDerive\sthe\svalues\sreturned\sby\ssqlite3_stmt_scanstatus()\sfrom\sthese\srecords\son\sdemand.
D 2014-11-01T20:38:06.833
C Minor\sperformance\senhancements\sto\sSQLITE_ENABLE_STMT_SCANSTATUS\scode.
D 2014-11-01T21:00:04.841
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in cf57f673d77606ab0f2d9627ca52a9ba1464146a
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -289,11 +289,11 @@ F src/update.c 3c4ecc282accf12d39edb8d524cf089645e55a13
F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
F src/util.c 3b627daa45c7308c1e36e3dbaa3f9ce7e5c7fa73
F src/vacuum.c 59f03f92bcff57faa6a8ca256eb29ccddfb0614a
F src/vdbe.c 69d025732d242d7c97282e6570a4e5eb768ebaff
F src/vdbe.c ccc626d70659160596d28b4a910b6086da788695
F src/vdbe.h 7d603b93d128e614ba2600f12a6c541435405522
F src/vdbeInt.h ee8d44cba5998279039bcd91ebddb6d9a2d463b8
F src/vdbeInt.h 21570e5ec8b3a385d003e6e20f3a91712b7050e5
F src/vdbeapi.c 19e433e69fe2b27bfc9337a207b6ebf499f41d03
F src/vdbeaux.c bad342af7cadb8d3bf2990700a78787d602dcd69
F src/vdbeaux.c 2887d02721c540b25969d3260d0d3d5668d11583
F src/vdbeblob.c 8b5442ff0954c44b45cbabbe2e94091a2e16fdef
F src/vdbemem.c 31d8eabb0cd78bfeab4e5124c7363c3e9e54db9f
F src/vdbesort.c 975aeffa99acb0991b2f288d30294756bff41438
@ -302,7 +302,7 @@ F src/vtab.c 2a30791bbd7926b589401bd09c3abb33de563793
F src/wal.c 10e7de7ce90865a68153f001a61f1d985cd17983
F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
F src/walker.c c253b95b4ee44b21c406e2a1052636c31ea27804
F src/where.c fb404e3db40db61c212ffb39022e885a91252498
F src/where.c ad4a3bca9070e013ff41e8e63835788bcc43dd1c
F src/whereInt.h a2bc22f4e3e70eeaa57272f354c288bc3b71b80b
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
@ -1211,7 +1211,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 8d8cc9608d30bb65fffcfe488e904411cbbc7f41
R e1e809461d373caeeb0e83f126874426
P 9ea37422a8cc2fce51bb10508e5e90f40fd4b511
R 4191876729196c1564c4c28cce5855c1
U dan
Z 5d5debb04affeaeb7378f6b538c8f641
Z 150c277a759b1b656399ef38dfe29c92

View File

@ -1 +1 @@
9ea37422a8cc2fce51bb10508e5e90f40fd4b511
f13d6ba8a72d75838c4aaf85326c1129da027f8b

View File

@ -609,7 +609,7 @@ int sqlite3VdbeExec(
nVmStep++;
pOp = &aOp[pc];
#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
if( p->pFrame==0 ) p->anExec[pc]++;
if( p->anExec ) p->anExec[pc]++;
#endif
/* Only allow tracing if SQLITE_DEBUG is defined.
@ -5409,6 +5409,7 @@ case OP_Program: { /* jump */
pFrame->token = pProgram->token;
pFrame->aOnceFlag = p->aOnceFlag;
pFrame->nOnceFlag = p->nOnceFlag;
pFrame->anExec = p->anExec;
pEnd = &VdbeFrameMem(pFrame)[pFrame->nChildMem];
for(pMem=VdbeFrameMem(pFrame); pMem!=pEnd; pMem++){
@ -5437,6 +5438,7 @@ case OP_Program: { /* jump */
p->nOp = pProgram->nOp;
p->aOnceFlag = (u8 *)&p->apCsr[p->nCursor];
p->nOnceFlag = pProgram->nOnce;
p->anExec = 0;
pc = -1;
memset(p->aOnceFlag, 0, p->nOnceFlag);

View File

@ -132,6 +132,7 @@ struct VdbeFrame {
Vdbe *v; /* VM this frame belongs to */
VdbeFrame *pParent; /* Parent of this frame, or NULL if parent is main */
Op *aOp; /* Program instructions for parent frame */
i64 *anExec; /* Event counters from parent frame */
Mem *aMem; /* Array of memory cells for parent frame */
u8 *aOnceFlag; /* Array of OP_Once flags for parent frame */
VdbeCursor **apCsr; /* Array of Vdbe cursors for parent frame */

View File

@ -1723,6 +1723,7 @@ void sqlite3VdbeMakeReady(
p->apCsr = allocSpace(p->apCsr, nCursor*sizeof(VdbeCursor*),
&zCsr, zEnd, &nByte);
p->aOnceFlag = allocSpace(p->aOnceFlag, nOnce, &zCsr, zEnd, &nByte);
p->anExec = allocSpace(p->anExec, p->nOp*sizeof(i64), &zCsr, zEnd, &nByte);
if( nByte ){
p->pFree = sqlite3DbMallocZero(db, nByte);
}
@ -1730,10 +1731,6 @@ void sqlite3VdbeMakeReady(
zEnd = &zCsr[nByte];
}while( nByte && !db->mallocFailed );
#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
p->anExec = (i64*)sqlite3DbMallocZero(db, p->nOp*sizeof(i64));
#endif
p->nCursor = nCursor;
p->nOnceFlag = nOnce;
if( p->aVar ){
@ -1794,6 +1791,7 @@ void sqlite3VdbeFreeCursor(Vdbe *p, VdbeCursor *pCx){
*/
int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
Vdbe *v = pFrame->v;
v->anExec = pFrame->anExec;
v->aOnceFlag = pFrame->aOnceFlag;
v->nOnceFlag = pFrame->nOnceFlag;
v->aOp = pFrame->aOp;
@ -2718,7 +2716,6 @@ void sqlite3VdbeClearObject(sqlite3 *db, Vdbe *p){
sqlite3DbFree(db, p->zSql);
sqlite3DbFree(db, p->pFree);
#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
sqlite3DbFree(db, p->anExec);
for(i=0; i<p->nScan; i++){
sqlite3DbFree(db, p->aScan[i].zName);
}

View File

@ -2821,7 +2821,7 @@ static int explainOneScan(
u16 wctrlFlags /* Flags passed to sqlite3WhereBegin() */
){
int ret = 0;
#ifndef SQLITE_DEBUG
#if !defined(SQLITE_DEBUG) && !defined(SQLITE_ENABLE_STMT_SCANSTATUS)
if( pParse->explain==2 )
#endif
{