-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
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
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.
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[].
*/
}
}
+ /* 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);