]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
This hack illustrates how to use the VDBE_PROFILE mechanism to show which
authordrh <drh@noemail.net>
Sat, 7 Jan 2017 00:42:57 +0000 (00:42 +0000)
committerdrh <drh@noemail.net>
Sat, 7 Jan 2017 00:42:57 +0000 (00:42 +0000)
bytecode operators are using resources other than time.  In this case, the
number of loops through the binary search code in sqlite3BtreeMovetoUnpacked()
is measured, for the purpose of helping to identify unnecessary btree searches.

FossilOrigin-Name: 746b1836834914627d97369690b9596d80235a35

manifest
manifest.uuid
src/btree.c
src/sqliteInt.h
src/vdbe.c

index 67b3b622ee5a83681e4e2c71585151b5dce7bdfe..57ac852545f91599607602f15a10537d5c358082 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Ensure\sthat\s"PRAGMA\scase_sensitive_like"\sand\s"PRAGMA\sshrink_memory"\sset\sthe\nnumber\sof\soutput\scolumns\sto\s0\s(as\sthey\sare\sstatements\sthat\sreturn\sno\sdata).
-D 2017-01-06T13:49:40.112
+C This\shack\sillustrates\show\sto\suse\sthe\sVDBE_PROFILE\smechanism\sto\sshow\swhich\nbytecode\soperators\sare\susing\sresources\sother\sthan\stime.\s\sIn\sthis\scase,\sthe\nnumber\sof\sloops\sthrough\sthe\sbinary\ssearch\scode\sin\ssqlite3BtreeMovetoUnpacked()\nis\smeasured,\sfor\sthe\spurpose\sof\shelping\sto\sidentify\sunnecessary\sbtree\ssearches.
+D 2017-01-07T00:42:57.449
 F Makefile.in 41bd4cad981487345c4a84081074bcdb876e4b2e
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da
@@ -331,7 +331,7 @@ F src/auth.c 930b376a9c56998557367e6f7f8aaeac82a2a792
 F src/backup.c faf17e60b43233c214aae6a8179d24503a61e83b
 F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
 F src/btmutex.c 0e9ce2d56159b89b9bc8e197e023ee11e39ff8ca
-F src/btree.c d2c100618784bd89c089fcef03ff6e789768ecae
+F src/btree.c 616212acc17a89d835fb5a9d379881af42485790
 F src/btree.h 2349a588abcd7e0c04f984e15c5c777b61637583
 F src/btreeInt.h 10c4b77c2fb399580babbcc7cf652ac10dba796e
 F src/build.c 9e799f1edd910dfa8a0bc29bd390d35d310596af
@@ -393,7 +393,7 @@ F src/shell.c 6095531aa900decdaa765e0f3993fba7153c92c1
 F src/sqlite.h.in 29bda4bee01248a5650567d7a22fac39bad1b542
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
-F src/sqliteInt.h 9fdfb8789b27a621f3401468bc1705c32308f877
+F src/sqliteInt.h 44a74e425b9e4a88b15e3ece325a0c03f74ce715
 F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
 F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
 F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
@@ -455,7 +455,7 @@ F src/update.c 1da7c462110bffed442a42884cb0d528c1db46d8
 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
 F src/util.c a88b0466fddf445ce752226d4698ca3faada620a
 F src/vacuum.c 33c174b28886b2faf26e503b5a49a1c01a9b1c16
-F src/vdbe.c 88bd6c32b333580d2661ac3afe33369757fb1522
+F src/vdbe.c 2d97b1955677d059ed0fbb70edbd6caa356a827d
 F src/vdbe.h b0866e4191f096f1c987a84b042c3599bdf5423b
 F src/vdbeInt.h 281cb70332dc8b593b8c7afe776f3a2ba7d4255e
 F src/vdbeapi.c d6ebaa465f070eb1af8ba4e7b34583ece87bdd24
@@ -1543,7 +1543,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 609ac1c73f7c2b48a571c178a72383996a9538fe
-R 812971df62a9791f0bfb0122470a2213
-U dan
-Z ebefd6b7654323e8a23a6cf648753c0a
+P 6696cd1878be4bd44a24841b04163e52d847711e
+R 84e708f4e891dde33f19bfdca19817dd
+T *branch * vdbe-aux-perf
+T *sym-vdbe-aux-perf *
+T -sym-trunk *
+U drh
+Z de29ad8a6d413bf4c57cf80372a53ca1
index 865cc476499fa93e9c80ed5155bad9c8ae572c2c..4386b3c190f153b4362d15faf1368a3ba2aa4cfa 100644 (file)
@@ -1 +1 @@
-6696cd1878be4bd44a24841b04163e52d847711e
\ No newline at end of file
+746b1836834914627d97369690b9596d80235a35
\ No newline at end of file
index f86976162526164b0d53b21c21c9165cf3076b1a..f9c33c95ef8f8b71f62a11649a122eebe9c8c65d 100644 (file)
@@ -5124,6 +5124,7 @@ int sqlite3BtreeMovetoUnpacked(
     Pgno chldPg;
     MemPage *pPage = pCur->apPage[pCur->iPage];
     u8 *pCell;                          /* Pointer to current cell in pPage */
+sqlite3PerfCnt++;
 
     /* pPage->nCell must be greater than zero. If this is the root-page
     ** the cursor would have been INVALID above and this for(;;) loop
index 8cfa0f88f70cd17096c4a77fb89c091c9d703976..efd5ff7e2e3ce82a57cbc7c7688f274bc62099ad 100644 (file)
@@ -4321,4 +4321,6 @@ Expr *sqlite3VectorFieldSubexpr(Expr*, int);
 Expr *sqlite3ExprForVectorField(Parse*,Expr*,int);
 void sqlite3VectorErrorMsg(Parse*, Expr*);
 
+sqlite3_uint64 sqlite3PerfCnt;
+
 #endif /* SQLITEINT_H */
index 5e707a6232fae42ec8fa6eb09aba5db7cd9a3afb..02444bb356b31f32b6f799d29010fb89d0882278 100644 (file)
@@ -506,7 +506,8 @@ static void registerTrace(int iReg, Mem *p){
 ** hwtime.h contains inline assembler code for implementing 
 ** high-performance timing routines.
 */
-#include "hwtime.h"
+/*#include "hwtime.h"*/
+#define sqlite3Hwtime(x) sqlite3PerfCnt
 
 #endif