Compare commits

...

2 Commits

Author SHA1 Message Date
drh c2afe9d9e3 Merge latest changes from trunk, and also move the perf-counter into the
inner loop of sqlite3BtreeMovetoUnpacked().

FossilOrigin-Name: ff9eab95879038ab3015b93f637f6d93bd87f9f4
2017-01-09 20:57:38 +00:00
drh 708991af38 This hack illustrates how to use the VDBE_PROFILE mechanism to show which
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
2017-01-07 00:42:57 +00:00
5 changed files with 15 additions and 10 deletions
+8 -8
View File
@@ -1,5 +1,5 @@
C Remove\sa\sredundant\sassignment\sstatement.
D 2017-01-09T19:55:19.701
C Merge\slatest\schanges\sfrom\strunk,\sand\salso\smove\sthe\sperf-counter\sinto\sthe\ninner\sloop\sof\ssqlite3BtreeMovetoUnpacked().
D 2017-01-09T20:57:38.218
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 32c8ebdef3c13c3d7ba3a7e4444e30aadfb56532
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 e71655293c9bde26939496f3aac9d1821d2c07a2
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 4c239b73d8df6ccd82842e2de0a882be46f6152d
F src/vdbe.c efd0792ea4386bb6bb2a2748797a4700a7e80f2c
F src/vdbe.h b0866e4191f096f1c987a84b042c3599bdf5423b
F src/vdbeInt.h 281cb70332dc8b593b8c7afe776f3a2ba7d4255e
F src/vdbeapi.c d6ebaa465f070eb1af8ba4e7b34583ece87bdd24
@@ -1543,7 +1543,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 237aa97452e20c312f256a8fd62531e3d447f84b
R 3d5f5ba0e62157717b12def8c248d9db
P 746b1836834914627d97369690b9596d80235a35 a5fa09657bd6c4ea5fe6712b0f8af2170cbe0381
R 31b85995726b68a4f730e62be5d8cccb
U drh
Z 6d8150e7f23763db279bf09c6fea02eb
Z 98cf3846e22814e5481340e5dc0d315a
+1 -1
View File
@@ -1 +1 @@
a5fa09657bd6c4ea5fe6712b0f8af2170cbe0381
ff9eab95879038ab3015b93f637f6d93bd87f9f4
+2
View File
@@ -5141,6 +5141,7 @@ int sqlite3BtreeMovetoUnpacked(
if( xRecordCompare==0 ){
for(;;){
i64 nCellKey;
sqlite3PerfCnt++;
pCell = findCellPastPtr(pPage, idx);
if( pPage->intKeyLeaf ){
while( 0x80 <= *(pCell++) ){
@@ -5174,6 +5175,7 @@ int sqlite3BtreeMovetoUnpacked(
}else{
for(;;){
int nCell; /* Size of the pCell cell in bytes */
sqlite3PerfCnt++;
pCell = findCellPastPtr(pPage, idx);
/* The maximum supported page-size is 65536 bytes. This means that
+2
View File
@@ -4321,4 +4321,6 @@ Expr *sqlite3VectorFieldSubexpr(Expr*, int);
Expr *sqlite3ExprForVectorField(Parse*,Expr*,int);
void sqlite3VectorErrorMsg(Parse*, Expr*);
sqlite3_uint64 sqlite3PerfCnt;
#endif /* SQLITEINT_H */
+2 -1
View 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