@$$(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
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
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
@$(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
########################################################################
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)
# 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
$(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
</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>
"$(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)"
}
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);
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()*/;
-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
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
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
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.
-e878ffd2eaa87e2978c44fcd03a1eb6114a9ae31e31101898d682f43cf81000f
+70b944cc0189309c2265b184381f2f050bced7b83f204d57b912def6e203982a