]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Get 64-bit builds of speedtest1.wasm running in order to better compare 32-/64-bit...
authorstephan <stephan@noemail.net>
Fri, 26 Sep 2025 18:29:00 +0000 (18:29 +0000)
committerstephan <stephan@noemail.net>
Fri, 26 Sep 2025 18:29:00 +0000 (18:29 +0000)
FossilOrigin-Name: 70b944cc0189309c2265b184381f2f050bced7b83f204d57b912def6e203982a

ext/wasm/GNUmakefile
ext/wasm/index.html
ext/wasm/mkwasmbuilds.c
ext/wasm/speedtest1-worker.js
ext/wasm/speedtest1.html
manifest
manifest.uuid

index b480e50cb2306fb0a66f8a4215f43d06ff064ec4..7be6532d121f63f53b32f1114df54b088de997ac 100644 (file)
@@ -230,15 +230,6 @@ $(3): $$(MAKEFILE_LIST) $$(bin.c-pp) $(2)
        @$$(call b.c-pp.shcmd,$(1),$(2),$(3),$(4))
 CLEAN_FILES += $(3)
 endef
-define xxxb.c-pp.target
-$(3): $$(MAKEFILE_LIST) $$(bin.c-pp) $(2)
-       @$$(call b.mkdir@); \
-       $$(call b.echo,$(1),$$(emo.disk)$$(emo.lock) $$(bin.c-pp) $(4) $(if $(loud.if),$(2))); \
-       rm -f $(3); \
-       $$(bin.c-pp) -o $(3) $(4) $(2) || exit; \
-       chmod -w $(3)
-CLEAN_FILES += $(3)
-endef
 
 c-pp.D.64bit = -D64bit
 
@@ -1171,7 +1162,7 @@ emcc.speedtest1.common = $(emcc_opt_full)
 emcc.speedtest1 = -I. -I$(dir $(sqlite3.canonical.c))
 emcc.speedtest1 += -sENVIRONMENT=web
 emcc.speedtest1 += -sALLOW_MEMORY_GROWTH
-emcc.speedtest1 += -sINITIAL_MEMORY=$(emcc.INITIAL_MEMORY.$(emcc.INITIAL_MEMORY))
+emcc.speedtest1 += -sINITIAL_MEMORY=$(emcc.INITIAL_MEMORY.32)
 emcc.speedtest1.common += -sINVOKE_RUN=0
 emcc.speedtest1.common += --no-entry
 emcc.speedtest1.common += -sABORTING_MALLOC
@@ -1189,7 +1180,6 @@ emcc.speedtest1.common += -sDYNAMIC_EXECUTION=0
 emcc.speedtest1.common += --minify 0
 emcc.speedtest1.common += -sEXPORT_NAME=$(sqlite3.js.init-func)
 emcc.speedtest1.common += -sWASM_BIGINT=$(emcc.WASM_BIGINT)
-emcc.speedtest1.common += -sMEMORY64=$(emcc.MEMORY64)
 speedtest1.exit-runtime0 = -sEXIT_RUNTIME=0
 speedtest1.exit-runtime1 = -sEXIT_RUNTIME=1
 # Re -sEXIT_RUNTIME=1 vs 0: if it's 1 and speedtest1 crashes, we get
@@ -1214,6 +1204,23 @@ $(EXPORTED_FUNCTIONS.speedtest1): $(EXPORTED_FUNCTIONS.api.core)
        @$(call b.mkdir@)
        @{ echo _wasm_main; cat $(EXPORTED_FUNCTIONS.api.core); } > $@
 speedtest1: $(out.speedtest1.js)
+
+speedtest1-64bit.html: speedtest1.html
+       @$(call b.echo,speedtest164,Creating from $<)
+       @rm -f $@; \
+       sed -e 's/speedtest1\.js/speedtest1-64bit\.js/' < $< > $@
+
+speedtest1-worker-64bit.html: speedtest1-worker.html
+       @$(call b.echo,speedtest164,Creating from $<)
+       @rm -f $@; \
+       sed -e 's/speedtest1-worker\.js/speedtest1-worker-64bit\.js/' < $< > $@
+
+speedtest1-worker-64bit.js: speedtest1-worker.js
+       @$(call b.echo,speedtest164,Creating from $<)
+       @rm -f $@; \
+       sed -e 's/speedtest1\.js/speedtest1-64bit\.js/' < $< > $@
+
+b-speedtest164: speedtest1-64bit.html speedtest1-worker-64bit.js speedtest1-worker-64bit.html
 # end speedtest1.js
 ########################################################################
 
@@ -1241,7 +1248,7 @@ speedtest1: $(out.speedtest1.js)
 define gen-tester1.js
 # $1 = build name to have dep on
 # $2 = suffix for tester1SUFFIX JS
-# $3 = c-pp flags
+# $3 = $(bin.c-pp) flags
 $(call b.c-pp.target,test,tester1.c-pp.js,tester1$(2),$(3))
 tester1$(2): $(sqlite3.ext.js) $(out.$(1).wasm)
 tester1-$(1): tester1$(2)
@@ -1256,8 +1263,8 @@ $(eval $(call gen-tester1.js,esm64,-64bit.mjs,$(c-pp.D.esm64)))
 # tester1.html variants:
 define gen-tester1.html
 # $1 = build name to have a dep on
-# $2 = file suffix: empty, -64bit, -esm, esm-64bit
-# $3 = c-pp -D flags.
+# $2 = filename suffix: empty, -64bit, -esm, esm-64bit
+# $3 = $(bin.c-pp) flags
 $(call b.c-pp.target,test,tester1.c-pp.html,tester1$(2).html,$(3))
 tester1$(2).html: tester1-$(1)
 tester1: tester1$(2).html
@@ -1274,6 +1281,8 @@ $(eval $(call gen-tester1.html,esm64,-esm-64bit,$(c-pp.D.esm64)))
 $(eval $(call b.c-pp.target,test,tester1-worker.c-pp.html,tester1-worker.html))
 $(eval $(call b.c-pp.target,test,tester1-worker.c-pp.html,tester1-worker-64bit.html,$(c-pp.D.64bit)))
 tester1: tester1-worker.html tester1-worker-64bit.html
+tester1-worker.html: tester1.mjs
+tester1-worker-64bit.html: tester1-64bit.mjs
 
 all: tester1
 # end tester1
index d77a655e62a7564f7721bf047683f657658bcd45..e72e8afac44ab89fd8a6ac101965c050ed1b38b1 100644 (file)
         </li>
         <li>speedtest1 ports (sqlite3's primary benchmarking tool)...
           <ul>
-            <li><a href='speedtest1.html'>speedtest1</a>: a main-thread WASM build of speedtest1.</li>
-            <li><a href='speedtest1.html?vfs=kvvfs'>speedtest1?vfs=kvvfs</a>: speedtest1 with the kvvfs.</li>
-            <li><a href='speedtest1-worker.html?size=15'>speedtest1-worker</a>: an interactive Worker-thread variant of speedtest1.</li>
-            <li><a href='speedtest1-worker.html?vfs=opfs&size=10'>speedtest1-worker?vfs=opfs</a>: speedtest1-worker with the
+            <li>speedtest1
+              (<a href='speedtest1.html'>32-bit</a>,
+              <a href='speedtest1-64bit.html'>64-bit</a>):
+              a main-thread WASM build of speedtest1.</li>
+            <li>speedtest1?vfs=kvvfs
+              (<a href='speedtest1.html?vfs=kvvfs'>32-bit</a>,
+              <a href='speedtest1-64bit.html?vfs=kvvfs'>64-bit</a>):
+              speedtest1 with the kvvfs.</li>
+            <li>speedtest1-worker
+              (<a href='speedtest1-worker.html?size=15'>32-bit</a>,
+              <a href='speedtest1-worker-64bit.html?size=15'>64-bit</a>):
+              an interactive Worker-thread variant of speedtest1.</li>
+            <li>speedtest1-worker?vfs=opfs
+              (<a href='speedtest1-worker.html?vfs=opfs&size=10'>32-bit</a>,
+              <a href='speedtest1-worker-64bit.html?vfs=opfs&size=10'>64-bit</a>):
+              speedtest1-worker with the
               OPFS VFS preselected and configured for a moderate workload.</li>
-            <li><a href='speedtest1-worker.html?vfs=opfs-sahpool&size=10'>speedtest1-worker?vfs=opfs-sahpool</a>:
+            <li>speedtest1-worker?vfs=opfs-sahpool
+              (<a href='speedtest1-worker.html?vfs=opfs-sahpool&size=10'>32-bit</a>,
+              <a href='speedtest1-worker-64bit.html?vfs=opfs-sahpool&size=10'>64-bit</a>):
               speedtest1-worker with the OPFS-SAHPOOL VFS preselected
               and configured for a moderate workload.
             </li>
index 1d17242d42c7ad5bc05e28ef62bc8809b62e4ea4..552818ddbf74180395fe5fe366ea933e043f83bb 100644 (file)
@@ -307,7 +307,7 @@ const BuildDefs oBuildDefs = {
     "$(emcc.speedtest1)"
     " $(emcc.speedtest1.common)"
     " -sMEMORY64=1 -sWASM_BIGINT=1"
-    " $(pre-post.speedtest1.flags)"
+    " $(pre-post.speedtest164.flags)"
     " $(cflags.common)"
     " -DSQLITE_SPEEDTEST1_WASM"
     " $(SQLITE_OPT)"
index 4107ca76e0a68cdf951137a17ef5424e1bb98104..ba11fd163d03fe8bc474a600725c8ffce4005d63 100644 (file)
@@ -80,6 +80,9 @@
       }
       App.wasm.xCall('wasm_main', argv.length,
                      App.wasm.scopedAllocMainArgv(argv));
+      log("WASM heap size:",App.wasm.heap8().byteLength,"bytes");
+      log("WASM pointer size:",App.wasm.ptr.size);
+
     }catch(e){
       mPost('error',e.message);
     }finally{
     log("Loaded speedtest1 module. Setting up...");
     App.pDir = wasmfsDir(S.wasm);
     App.wasm = S.wasm;
-    log("WASM pointer size:",App.wasm.ptr.size);
+    log("WASM heap size:",sqlite3.wasm.heap8().byteLength,"bytes");
+    log("WASM pointer size:",sqlite3.wasm.ptr.size);
     //if(App.pDir) log("Persistent storage:",pDir);
     //else log("Using transient storage.");
     mPost('ready',true);
index a841c7fa07a74d709fa4a461c7d096d06b2e319d..cce6171850db977e81fd0a96a51c5412d0f22bc8 100644 (file)
@@ -79,7 +79,7 @@
         logList.forEach((v)=>log2('',v));
         logList.length = 0;
     };
-    /* can't update DOM while speedtest is running unless we run
+    /* we cannot update DOM while speedtest is running unless we run
        speedtest in a worker thread. */;
     const log = (...args)=>{
         console.log(...args);
         // These log messages are not emitted to the UI until after main() returns. Fixing that
         // requires moving the main() call and related cleanup into a timeout handler.
         if(pDir) wasm.sqlite3_wasm_vfs_unlink(pVfs,dbFile);
+        log2('',"WASM heap size:",sqlite3.wasm.heap8().byteLength,"bytes");
+        log2('',"WASM pointer size:",sqlite3.wasm.ptr.size);
         log2('',"Starting native app:\n ",argv.join(' '));
         log2('',"This will take a while and the browser might warn about the runaway JS.",
              "Give it time...");
             if(pDir) wasm.sqlite3_wasm_vfs_unlink(pVfs,dbFile);
             logList.unshift("Done running native main(). Output:");
             dumpLogList();
+            log2('',"WASM heap size:",sqlite3.wasm.heap8().byteLength,"bytes");
         }, 50);
     }/*runTests()*/;
 
index 5e6568b8acd1b0c6024b7ea569636f8a82cbb25c..3118c5998a54f0e306d19bfe6a25e5c36c53ca54 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Reinstate\sthe\sModule.instantiateWasm()\soverride\sand\ssimplify\show\sthe\swasm\sfilename\sgets\sinjected\sinto\sthe\sJS\sfiles.
-D 2025-09-26T17:11:39.321
+C Get\s64-bit\sbuilds\sof\sspeedtest1.wasm\srunning\sin\sorder\sto\sbetter\scompare\s32-/64-bit\sperformance\s(spoiler\salert:\sthe\slatter\sis\sconsistently\sroughly\s10%\sslower).\sAdd\sWASM\sheap\susage\sinfo\sto\sspeedtest1.
+D 2025-09-26T18:29:00.141
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -578,7 +578,7 @@ F ext/session/sqlite3session.c b3de195ce668cace9b324599bf6255a70290cbfb5451e826e
 F ext/session/sqlite3session.h 7404723606074fcb2afdc6b72c206072cdb2b7d8ba097ca1559174a80bc26f7a
 F ext/session/test_session.c 8766b5973a6323934cb51248f621c3dc87ad2a98f023c3cc280d79e7d78d36fb
 F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c
-F ext/wasm/GNUmakefile e6ab3f66057c889ef384ba57240e1a6eb128d1b0dddb919aa3c6ec2a845f4117
+F ext/wasm/GNUmakefile e5f1081c0f07b0073dc6b005309ce59dd93c312ed793a25b46d0d889210ccad6
 F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a
 F ext/wasm/README.md 66ace67ae98a45e4116f2ca5425b716887bcee4d64febee804ff6398e1ae9ec7
 F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff
@@ -630,19 +630,19 @@ F ext/wasm/fiddle/fiddle-worker.js 7798af02e672e088ff192716f80626c8895e19301a65b
 F ext/wasm/fiddle/fiddle.js 84fd75967e0af8b69d3dd849818342227d0f81d13db92e0dcbc63649b31a4893
 F ext/wasm/fiddle/index.html a27b8127ef9ecf19612da93b2a6a73bdb3777b5c56b5450bb7200a94bc108ff9
 F ext/wasm/index-dist.html db23748044e286773f2768eec287669501703b5d5f72755e8db73607dc54d290
-F ext/wasm/index.html 1b329fb63e057c02a17ce178308d6b06aac62d92af7dd6d821fb0e183e0f1557
+F ext/wasm/index.html 1b06cef70db4b2d5c0af1f9e6e32b27c1ca298cde97365a887926d501fb00b38
 F ext/wasm/jaccwabyt/jaccwabyt.js bbac67bc7a79dca34afe6215fd16b27768d84e22273507206f888c117e2ede7d
 F ext/wasm/jaccwabyt/jaccwabyt.md 167fc0b624c9bc2c477846e336de9403842d81b1a24fc4d3b24317cb9eba734f
 F ext/wasm/mkdist.sh 29f8a37a7aba41fa5df8e89b1fab02b83b35c43473c5cf808584872e022514b8 x
-F ext/wasm/mkwasmbuilds.c 97c628e27c97aa23b9a5d2fec1b59af34cc002441780aa909b2a87dd61b8c5fd
+F ext/wasm/mkwasmbuilds.c 852f008d7cbe2ccdf2be53c449c34b5fa4e7fb4428c40b893c312497c676f8d6
 F ext/wasm/module-symbols.html dc476b403369b26a1a23773e13b80f41b9a49f0825e81435fe3600a7cfbbe337
 F ext/wasm/scratchpad-wasmfs.html a3d7388f3c4b263676b58b526846e9d02dfcb4014ff29d3a5040935286af5b96
 F ext/wasm/scratchpad-wasmfs.mjs 66034b9256b218de59248aad796760a1584c1dd842231505895eff00dbd57c63
 F ext/wasm/speedtest1-wasmfs.html 0e9d335a9b5b5fafe6e1bc8dc0f0ca7e22e6eb916682a2d7c36218bb7d67379d
 F ext/wasm/speedtest1-wasmfs.mjs c77c7231338ed5c0e1ce16aa29106df8e5b5cf11a48319c49433490a8d3ded30
 F ext/wasm/speedtest1-worker.html 068d4190f304fa1c34e6501a1b3a4c32fe8d8dac93c2d0f53d667a1cb386eedc
-F ext/wasm/speedtest1-worker.js 5b7eba7cdb5239768e1ed61edb046df8e0092e6c9d6e0bc76e51536022bdccb9
-F ext/wasm/speedtest1.html e2a0e0bd12243ca34b11235bf9f3c229f4574ea1125f2ecf2bf0589853d6f9c8
+F ext/wasm/speedtest1-worker.js 958a2d3c710bf8e82567277f656193a0248216db99a3c2c86966124b84309efb
+F ext/wasm/speedtest1.html c90d63dfa795f0cb1ad188de587be9024b1ff73b4adc5fdf7efc0d781be94d03
 F ext/wasm/split-speedtest1-script.sh a3e271938d4d14ee49105eb05567c6a69ba4c1f1293583ad5af0cd3a3779e205 x
 F ext/wasm/sql/000-mandelbrot.sql 775337a4b80938ac8146aedf88808282f04d02d983d82675bd63d9c2d97a15f0
 F ext/wasm/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f2f78d0917299b5
@@ -2169,8 +2169,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 869c968569b09d05a5b7d587d8fddb3b4611daf7467dc157701e5dc6c9608606
-R b3633c338a6e359cda01fed061e2f038
+P e878ffd2eaa87e2978c44fcd03a1eb6114a9ae31e31101898d682f43cf81000f
+R ab805d7d8e634566f9f6c48749b1ee11
 U stephan
-Z 287871c6cf5545c1ebf0563c19172d63
+Z 49947c134dd71848d5f3e8b1b4a55ee5
 # Remove this line to create a well-formed Fossil manifest.
index 3de8966889df2271d4a14baf5636ad1c2fc561ea..2eff9c4f6839401f0c57cc5e88d44fbd7933dbf6 100644 (file)
@@ -1 +1 @@
-e878ffd2eaa87e2978c44fcd03a1eb6114a9ae31e31101898d682f43cf81000f
+70b944cc0189309c2265b184381f2f050bced7b83f204d57b912def6e203982a