From: drh <> Date: Tue, 25 Feb 2025 12:18:27 +0000 (+0000) Subject: Small performance improvement for the new %#Q conversion in printf. X-Git-Tag: major-release~241^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d4c686ed8fd4f69c26a1ee0c7d65ded6b5fa17c7;p=thirdparty%2Fsqlite.git Small performance improvement for the new %#Q conversion in printf. FossilOrigin-Name: 17e440781e68d7d3ea68c5144e1e08e183f0caef595a6c7ac4ce56489c60f476 --- diff --git a/manifest b/manifest index 3adc2b10de..a1f57c8112 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Consolidate\stwo\sdifferent\sUTF8\sencoders\sinto\sa\ssingle\ssubroutine. -D 2025-02-25T11:47:34.550 +C Small\sperformance\simprovement\sfor\sthe\snew\s%#Q\sconversion\sin\sprintf. +D 2025-02-25T12:18:27.029 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d @@ -777,7 +777,7 @@ F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5 F src/pcache1.c 78d4935e510f7bed0fdd1a3f742c0e663b36a795f9dc7411161dc22bdae1245e F src/pragma.c c7ada272232e1182c4536d9637fa7b955a10bc1bd8d5a87d4dc9309dab827791 F src/prepare.c 1832be043fce7d489959aae6f994c452d023914714c4d5457beaed51c0f3d126 -F src/printf.c b6056bd2818523255255af34d370e2665b4895e50476955de797368d92f8f31f +F src/printf.c b373a8800e09fb888497b2bc640e455ee8ebc584a60f16368989394d5b895ac0 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c F src/resolve.c 626c24b258b111f75c22107aa5614ad89810df3026f5ca071116d3fe75925c75 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 @@ -2211,8 +2211,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P c3949852cee320c2e02123b99c33155c459b10b2ac8e4fe80b1b7624c9ce0817 -R 783f95f7f826d114483ba4d9a5fea8e7 +P 6208e494858b9d362efc7db4e8aac6f8e93fe51d2e038c94dfa97c55a74688a0 +R 5e3cbac5c36e856b76f244c18c63cff3 U drh -Z 0a01b2d715a4d18665f9611e7764aecb +Z 71404ee027b8adeecdc3ccec4e60e22e # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 52be54b069..170b88d197 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6208e494858b9d362efc7db4e8aac6f8e93fe51d2e038c94dfa97c55a74688a0 +17e440781e68d7d3ea68c5144e1e08e183f0caef595a6c7ac4ce56489c60f476 diff --git a/src/printf.c b/src/printf.c index 30c4ec6059..ae9e9010bd 100644 --- a/src/printf.c +++ b/src/printf.c @@ -757,7 +757,7 @@ void sqlite3_str_vappendf( case etESCAPE_Q: /* %Q: Escape ' and enclose in '...' */ case etESCAPE_w: { /* %w: Escape " characters */ i64 i, j, k, n; - int isnull, needQuote = 0; + int needQuote = 0; char ch; char *escarg; char q; @@ -767,18 +767,17 @@ void sqlite3_str_vappendf( }else{ escarg = va_arg(ap,char*); } - isnull = escarg==0; + if( escarg==0 ){ + escarg = (xtype==etESCAPE_Q ? "NULL" : "(NULL)"); + }else if( xtype==etESCAPE_Q ){ + needQuote = 1; + } if( xtype==etESCAPE_w ){ q = '"'; flag_alternateform = 0; }else{ q = '\''; } - if( isnull ){ - escarg = (xtype==etESCAPE_Q ? "NULL" : "(NULL)"); - }else if( xtype==etESCAPE_Q ){ - needQuote = 1; - } /* For %q, %Q, and %w, the precision is the number of bytes (or ** characters if the ! flags is present) to use from the input. ** Because of the extra quoting characters inserted, the number @@ -832,12 +831,12 @@ void sqlite3_str_vappendf( } } k = i; - for(i=0; i