Compare commits

...

1 Commits

Author SHA1 Message Date
drh e8f850e7bd Attempt to improvement performance of multiple OP_Columns that occur in a row.
Minimal improvement for a lot of complexity and risk.

FossilOrigin-Name: 53478f29347c7f17d46ec2a1e7c390c9be9e9fc32f31da77a4ba7a9d67440a8e
2025-02-11 16:00:52 +00:00
3 changed files with 36 additions and 7 deletions
+10 -6
View File
@@ -1,5 +1,5 @@
C Remove\sa\spointless\sline\sof\scode.
D 2025-02-10T19:48:13.176
C Attempt\sto\simprovement\sperformance\sof\smultiple\sOP_Columns\sthat\soccur\sin\sa\srow.\nMinimal\simprovement\sfor\sa\slot\sof\scomplexity\sand\srisk.
D 2025-02-11T16:00:52.467
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -849,7 +849,7 @@ F src/upsert.c 215328c3f91623c520ec8672c44323553f12caeb4f01b1090ebdca99fdf7b4f1
F src/utf.c 8b29d9a5956569ea2700f869669b8ef67a9662ee5e724ff77ab3c387e27094ba
F src/util.c 9ff6470dabcf943fd796d2da766c98bd328c8f6fe036a31e5b338e628603f989
F src/vacuum.c b763b6457bd058d2072ef9364832351fd8d11e8abf70cbb349657360f7d55c40
F src/vdbe.c b98d86de7f0e6c02fb14e0e1ae8feab6aa84669d389771a848e23f59eb70dcad
F src/vdbe.c eeb0882a45918150d9576f5bbcaa255689082e70cc9abf82287439bc39440edf
F src/vdbe.h 3d26d5c7660c5c7bd33ffb0d8784615072d8b23c81f8110870efe2631136bc89
F src/vdbeInt.h 078b1c15b26587b54c1c1879d0d2f4dec812b9de4c337fed9faf73fbcc3bf091
F src/vdbeapi.c 82fe278a7c71b653235c6f9fb5de0b5de589908dfcb011ba2a782e8becf06f86
@@ -2209,8 +2209,12 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 6b9007cb30257ca97de74dec1df47f46f238f034083517a51c24334e4bd30663
R 6d33e5e79434d78cc0854681af5e3875
P 57b2b812c8c5524f315e20cee0e6a12a3b1635aeb42925bf891532a7029d0eb0
R 5b40ead92f50e29d43d44519f8927a47
T *branch * column-optimization
T *sym-column-optimization *
T +closed *
T -sym-trunk *
U drh
Z 4cd996db652c357ad0cb2f7e1b69e405
Z 359be1e71666f10555b25682f42340bf
# Remove this line to create a well-formed Fossil manifest.
+1 -1
View File
@@ -1 +1 @@
57b2b812c8c5524f315e20cee0e6a12a3b1635aeb42925bf891532a7029d0eb0
53478f29347c7f17d46ec2a1e7c390c9be9e9fc32f31da77a4ba7a9d67440a8e
+25
View File
@@ -3055,6 +3055,7 @@ op_column_restart:
goto op_column_restart;
}
op_column_again:
/* Make sure at least the first p2+1 entries of the header have been
** parsed and valid information is in aOffset[] and pC->aType[].
*/
@@ -3210,6 +3211,30 @@ op_column_restart:
}
}
/* Try to save work if two or more OP_Columns against the same
** cursor occur one right after another.
**
** This optimization saves CPU cycles when it applies. But it is
** not applicable very often. So we often burn more CPU cycles
** determining whether or not the optimization does apply than the
** optimization actually saves, depending on the workload. Even
** when there is a net gain, it is not that much.
**
** This change (and this comment) are saved for future reference.
** But unless some further improvement is found, it does not seem
** worth the added complexity.
*/
if( pOp[1].opcode==OP_Column
&& pC==p->apCsr[pOp[1].p1]
){
UPDATE_MAX_BLOBSIZE(pDest);
REGISTER_TRACE(pOp->p3, pDest);
pOp++;
nVmStep++;
p2 = (u32)pOp->p2;
goto op_column_again;
}
op_column_out:
UPDATE_MAX_BLOBSIZE(pDest);
REGISTER_TRACE(pOp->p3, pDest);