]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Performance improvement to sqlite3ExprCollSeq(). With this change, the
authordrh <drh@noemail.net>
Fri, 27 Jul 2018 18:19:12 +0000 (18:19 +0000)
committerdrh <drh@noemail.net>
Fri, 27 Jul 2018 18:19:12 +0000 (18:19 +0000)
performance of speed-check.sh is within 400,000 cycles of trunk.

FossilOrigin-Name: a5f86f49b7d9e52546f234f7c3bcbac6b0f78aa55a71c44ca69e21bc31139f3e

manifest
manifest.uuid
src/expr.c

index a1c63d4fe760e473f9e6eefac379ee312daab458..f2357567e32d3cc8e0a443d0d33e8edf68507e79 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Faster\simplementation\sof\ssqlite3IsBinary().
-D 2018-07-27T18:12:40.840
+C Performance\simprovement\sto\ssqlite3ExprCollSeq().\s\sWith\sthis\schange,\sthe\nperformance\sof\sspeed-check.sh\sis\swithin\s400,000\scycles\sof\strunk.
+D 2018-07-27T18:19:12.560
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 0a3a6c81e6fcb969ff9106e882f0a08547014ba463cb6beca4c4efaecc924ee6
@@ -450,7 +450,7 @@ F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957
 F src/dbpage.c 4aa7f26198934dbd002e69418220eae3dbc71b010bbac32bd78faf86b52ce6c3
 F src/dbstat.c edabb82611143727511a45ca0859b8cd037851ebe756ae3db289859dd18b6f91
 F src/delete.c 4c8c7604277a2041647f96b78f4b9a47858e9217e4fb333d35e7b5ab32c5b57f
-F src/expr.c fe08e0dbf1c561491f879cf4bbf9d3be5ff8ccb9555f60093d3c56c0c37a37b3
+F src/expr.c 5b5e7b571f377ca76fc76eec0a684384483e0bf6525f6b561a09db09d81600eb
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c b1da9ef8dc834603bb0d28972378a7ce65897847f9a1e89ab800bbdf24c788ee
 F src/func.c 7c288b4ce309b5a8b8473514b88e1f8e69a80134509a8c0db8e39c858e367e7f
@@ -1753,7 +1753,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 598d608359005b13fa1151c6c69f2fd12ef3ab7f563a035fc4a6f3c569dc6c67
-R 1d79df50e5dd49c24c2c0d46db1dcbfe
+P be05d0db09f43cc3362c28273463d1d236af737a4f8a494cf1050da07ed0df47
+R 1753b15b3d22c91de99ab8b77a1df21b
 U drh
-Z d36b5ae00dc0d8f1b3add00c50463640
+Z 1c821d2ad72826ccbc3322222c2b360d
index 16820a46c5cb03c00e8064e96cb17d021880b72a..63b99ad1fa391d7c5d6042007dca5de5c756a42f 100644 (file)
@@ -1 +1 @@
-be05d0db09f43cc3362c28273463d1d236af737a4f8a494cf1050da07ed0df47
\ No newline at end of file
+a5f86f49b7d9e52546f234f7c3bcbac6b0f78aa55a71c44ca69e21bc31139f3e
\ No newline at end of file
index 5c9a29f63e1c7b7634ef6194c97fd58933618c52..7767061050730e10017b7d30dcb130852c1a71d5 100644 (file)
@@ -141,14 +141,6 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
   while( p ){
     int op = p->op;
     if( p->flags & EP_Generic ) break;
-    if( op==TK_CAST || op==TK_UPLUS ){
-      p = p->pLeft;
-      continue;
-    }
-    if( op==TK_COLLATE || (op==TK_REGISTER && p->op2==TK_COLLATE) ){
-      pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken);
-      break;
-    }
     if( (op==TK_AGG_COLUMN || op==TK_COLUMN
           || op==TK_REGISTER || op==TK_TRIGGER)
      && p->pTab!=0
@@ -162,6 +154,14 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
       }
       break;
     }
+    if( op==TK_CAST || op==TK_UPLUS ){
+      p = p->pLeft;
+      continue;
+    }
+    if( op==TK_COLLATE || (op==TK_REGISTER && p->op2==TK_COLLATE) ){
+      pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken);
+      break;
+    }
     if( p->flags & EP_Collate ){
       if( p->pLeft && (p->pLeft->flags & EP_Collate)!=0 ){
         p = p->pLeft;