]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make the sqlite3VdbeExec() function about 2% faster by storing the opcode
authordrh <drh@noemail.net>
Sat, 14 Nov 2009 18:04:35 +0000 (18:04 +0000)
committerdrh <drh@noemail.net>
Sat, 14 Nov 2009 18:04:35 +0000 (18:04 +0000)
array in a local variable.

FossilOrigin-Name: 8bd3cc82720ac7e8a9d4a03a882b6f8226867b0d

manifest
manifest.uuid
src/vdbe.c

index efad3c5cdca46ca4ddb6cf143748a3846cb4800c..cf35357f94392ecaa534eae58ced314c3c10c337 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Performance\simprovements\sand\ssize\sreductions\son\sthe\sOP_Seek*\sfamily\sof\nVDBE\sopcodes.
-D 2009-11-13T20:52:44
+C Make\sthe\ssqlite3VdbeExec()\sfunction\sabout\s2%\sfaster\sby\sstoring\sthe\sopcode\narray\sin\sa\slocal\svariable.
+D 2009-11-14T18:04:36
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 53f3dfa49f28ab5b80cb083fb7c9051e596bcfa1
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -210,7 +210,7 @@ F src/update.c 8efeb09822886e33c265dd96d29a3d865ea6dcf2
 F src/utf.c dad16adcc0c35ef2437dca125a4b07419d361052
 F src/util.c ad4f03079ba0fe83590d1cc9197e8e4844e38592
 F src/vacuum.c 03309a08d549f9389cc3a3589afd4fadbdaf0679
-F src/vdbe.c 74158ea3fd68231720ba75ebec5072eda1ad8cf9
+F src/vdbe.c 0abb88a10fb243cc753c3ab468d6aab7c3ee5211
 F src/vdbe.h 65cd747e36ad444cb1a17e529030942c45a61fe3
 F src/vdbeInt.h 59c65e7b810836b9e946acee45c7b3c02b967d1b
 F src/vdbeapi.c 17680ab7a75ec938c5ba039a6c87489d01faf2cb
@@ -771,14 +771,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 3352b3eba545c3128efb7665ec91d4df3b16011d
-R 2242fd95cd691be062201d4a6409f215
+P ed820f45cf4354b1e1db64049c47a07221a7ff6d
+R 03060ba235b0950aa9146609f8d8a31d
 U drh
-Z fdb196c2be03c08f60c67969937fe987
+Z ce5be4ec1d2dd720600d2c9af2d32994
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFK/ccfoxKgR168RlERAsHZAJ45TKVOQRlFzMf0pR03Ik5X3PWGHgCfbTo2
-sR7n4qre/qrfhmog3CvnvbQ=
-=5/U8
+iD8DBQFK/vE5oxKgR168RlERAor4AJ4s/kWdVBsQ2tAlXF4Ix+CSbm+a5wCfWYrX
+75gfXpBzWcUcFFhH7YbfTXU=
+=IpIH
 -----END PGP SIGNATURE-----
index bc3cfba6e06c626a9c2afa141ffe9aea957c2653..aba27a39892db13896dc7b708355dfb78f4ab390 100644 (file)
@@ -1 +1 @@
-ed820f45cf4354b1e1db64049c47a07221a7ff6d
\ No newline at end of file
+8bd3cc82720ac7e8a9d4a03a882b6f8226867b0d
\ No newline at end of file
index b04e60e27774a599b1683a4e57281bb56ac353c5..f4d66e41aecc0e8d7b368fbfd45d3ad412349f62 100644 (file)
@@ -555,6 +555,7 @@ int sqlite3VdbeExec(
   Vdbe *p                    /* The VDBE */
 ){
   int pc;                    /* The program counter */
+  Op *aOp = p->aOp;          /* Copy of p->aOp */
   Op *pOp;                   /* Current operation */
   int rc = SQLITE_OK;        /* Value to return */
   sqlite3 *db = p->db;       /* The database */
@@ -599,7 +600,7 @@ int sqlite3VdbeExec(
     printf("VDBE Program Listing:\n");
     sqlite3VdbePrintSql(p);
     for(i=0; i<p->nOp; i++){
-      sqlite3VdbePrintOp(stdout, i, &p->aOp[i]);
+      sqlite3VdbePrintOp(stdout, i, &aOp[i]);
     }
   }
   if( fileExists(db, "vdbe_trace") ){
@@ -614,7 +615,7 @@ int sqlite3VdbeExec(
     origPc = pc;
     start = sqlite3Hwtime();
 #endif
-    pOp = &p->aOp[pc];
+    pOp = &aOp[pc];
 
     /* Only allow tracing if SQLITE_DEBUG is defined.
     */
@@ -847,6 +848,7 @@ case OP_Halt: {
       ** as the p2 of the calling OP_Program.  */
       pc = p->aOp[pc].p2-1;
     }
+    aOp = p->aOp;
     break;
   }
 
@@ -1383,7 +1385,7 @@ case OP_Function: {
 
   ctx.isError = 0;
   if( ctx.pFunc->flags & SQLITE_FUNC_NEEDCOLL ){
-    assert( pOp>p->aOp );
+    assert( pOp>aOp );
     assert( pOp[-1].p4type==P4_COLLSEQ );
     assert( pOp[-1].opcode==OP_CollSeq );
     ctx.pColl = pOp[-1].p4.pColl;
@@ -4873,7 +4875,7 @@ case OP_Program: {        /* jump */
   p->nMem = pFrame->nChildMem;
   p->nCursor = (u16)pFrame->nChildCsr;
   p->apCsr = (VdbeCursor **)&p->aMem[p->nMem+1];
-  p->aOp = pProgram->aOp;
+  p->aOp = aOp = pProgram->aOp;
   p->nOp = pProgram->nOp;
   pc = -1;
 
@@ -5633,7 +5635,7 @@ default: {          /* This is really OP_Noop and OP_Explain */
       pOp->cnt++;
 #if 0
         fprintf(stdout, "%10llu ", elapsed);
-        sqlite3VdbePrintOp(stdout, origPc, &p->aOp[origPc]);
+        sqlite3VdbePrintOp(stdout, origPc, &aOp[origPc]);
 #endif
     }
 #endif