diff options
Diffstat (limited to 'ext/wasm/speedtest1.html')
-rw-r--r-- | ext/wasm/speedtest1.html | 225 |
1 files changed, 115 insertions, 110 deletions
diff --git a/ext/wasm/speedtest1.html b/ext/wasm/speedtest1.html index 08195f2b1..6c2853a73 100644 --- a/ext/wasm/speedtest1.html +++ b/ext/wasm/speedtest1.html @@ -39,131 +39,136 @@ <script src="common/SqliteTestUtil.js"></script> <script src="speedtest1.js"></script> <script>(function(){ - /** - If this environment contains OPFS, this function initializes it and - returns the name of the dir on which OPFS is mounted, else it returns - an empty string. - */ - const wasmfsDir = function f(wasmUtil){ - if(undefined !== f._) return f._; - const pdir = '/persistent'; - if( !self.FileSystemHandle - || !self.FileSystemDirectoryHandle - || !self.FileSystemFileHandle){ + /** + If this environment contains OPFS, this function initializes it and + returns the name of the dir on which OPFS is mounted, else it returns + an empty string. + */ + const wasmfsDir = function f(wasmUtil){ + if(undefined !== f._) return f._; + const pdir = '/persistent'; + if( !self.FileSystemHandle + || !self.FileSystemDirectoryHandle + || !self.FileSystemFileHandle){ return f._ = ""; - } - try{ + } + try{ if(0===wasmUtil.xCallWrapped( - 'sqlite3_wasm_init_wasmfs', 'i32', ['string'], pdir + 'sqlite3_wasm_init_wasmfs', 'i32', ['string'], pdir )){ - return f._ = pdir; + return f._ = pdir; }else{ - return f._ = ""; + return f._ = ""; } - }catch(e){ + }catch(e){ // sqlite3_wasm_init_wasmfs() is not available return f._ = ""; - } - }; - wasmfsDir._ = undefined; + } + }; + wasmfsDir._ = undefined; - const eOut = document.querySelector('#test-output'); - const log2 = function(cssClass,...args){ - const ln = document.createElement('div'); - if(cssClass) ln.classList.add(cssClass); - ln.append(document.createTextNode(args.join(' '))); - eOut.append(ln); - //this.e.output.lastElementChild.scrollIntoViewIfNeeded(); - }; - const logList = []; - const dumpLogList = function(){ - logList.forEach((v)=>log2('',v)); - logList.length = 0; - }; - /* can't update DOM while speedtest is running unless we run - speedtest in a worker thread. */; - const log = (...args)=>{ - console.log(...args); - logList.push(args.join(' ')); - }; - const logErr = function(...args){ - console.error(...args); - logList.push('ERROR: '+args.join(' ')); - }; + const eOut = document.querySelector('#test-output'); + const log2 = function(cssClass,...args){ + const ln = document.createElement('div'); + if(cssClass) ln.classList.add(cssClass); + ln.append(document.createTextNode(args.join(' '))); + eOut.append(ln); + //this.e.output.lastElementChild.scrollIntoViewIfNeeded(); + }; + const logList = []; + const dumpLogList = function(){ + logList.forEach((v)=>log2('',v)); + logList.length = 0; + }; + /* can't update DOM while speedtest is running unless we run + speedtest in a worker thread. */; + const log = (...args)=>{ + console.log(...args); + logList.push(args.join(' ')); + }; + const logErr = function(...args){ + console.error(...args); + logList.push('ERROR: '+args.join(' ')); + }; - const runTests = function(sqlite3){ - const capi = sqlite3.capi, wasm = capi.wasm; - //console.debug('sqlite3 =',sqlite3); - const unlink = wasm.xWrap("sqlite3_wasm_vfs_unlink", "int", ["string"]); - const pDir = wasmfsDir(wasm); - if(pDir){ + const runTests = function(sqlite3){ + const capi = sqlite3.capi, wasm = capi.wasm; + //console.debug('sqlite3 =',sqlite3); + const unlink = wasm.xWrap("sqlite3_wasm_vfs_unlink", "int", ["string"]); + const pDir = wasmfsDir(wasm); + if(pDir){ console.warn("Persistent storage:",pDir); - } - const scope = wasm.scopedAllocPush(); - let dbFile = pDir+"/speedtest1.db"; - const urlParams = self.SqliteTestUtil.processUrlArgs(); - const argv = ["speedtest1"]; - if('string'===typeof urlParams.vfs){ - if(!capi.sqlite3_vfs_find(urlParams.vfs)){ - log2('error',"Unknown VFS:",urlParams.vfs); - return; - } - argv.push("--vfs", urlParams.vfs); - log2('',"Using VFS:",urlParams.vfs); - if('kvvfs' === urlParams.vfs){ - urlParams.size = 2; - dbFile = 'session'; - log2('warning',"kvvfs VFS: forcing --size",urlParams.size, - "and filename '"+dbFile+"'."); - capi.sqlite3_web_kvvfs_clear('session'); - } - } - [ - 'size' - ].forEach(function(k){ - const v = urlParams[k]; - if(v) argv.push('--'+k, urlParams[k]); - }); - if(urlParams.flags){ - argv.push(...(urlParams.flags.split(','))); - }else{ - argv.push( - "--singlethread", - //"--nomutex", - //"--nosync", - "--nomemstat" - ); + } + const scope = wasm.scopedAllocPush(); + let dbFile = pDir+"/speedtest1.db"; + const urlParams = new URL(self.location.href).searchParams; + const argv = ["speedtest1"]; + if(urlParams.has('flags')){ + argv.push(...(urlParams.get('flags').split(','))); + } + + let forceSize = 0; + if(urlParams.has('vfs')){ + const vfs = urlParams.get('vfs'); + if(!capi.sqlite3_vfs_find(vfs)){ + log2('error',"Unknown VFS:",vfs); + return; + } + argv.push("--vfs", vfs); + log2('',"Using VFS:",vfs); + if('kvvfs' === vfs){ + forceSize = 2; + dbFile = 'session'; + log2('warning',"kvvfs VFS: forcing --size",forceSize, + "and filename '"+dbFile+"'."); + capi.sqlite3_web_kvvfs_clear(dbFile); + } + } + if(forceSize){ + argv.push('--size',forceSize); + }else{ + [ + 'size' + ].forEach(function(k){ + const v = urlParams.get(k); + if(v) argv.push('--'+k, urlParams[k]); + }); + } + argv.push( + "--singlethread", + //"--nomutex", + //"--nosync", //"--memdb", // note that memdb trumps the filename arg - } - argv.push("--big-transactions"/*important for tests 410 and 510!*/, - dbFile); - console.log("argv =",argv); - // 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) unlink(dbFile); - 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..."); - logList.length = 0; - setTimeout(function(){ - wasm.xCall('wasm_main', argv.length, - wasm.scopedAllocMainArgv(argv)); - wasm.scopedAllocPop(scope); - if(pDir) unlink(dbFile); - logList.unshift("Done running native main(). Output:"); - dumpLogList(); - }, 50); - }/*runTests()*/; + "--nomemstat" + ); + argv.push("--big-transactions"/*important for tests 410 and 510!*/, + dbFile); + console.log("argv =",argv); + // 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) unlink(dbFile); + 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..."); + logList.length = 0; + setTimeout(function(){ + wasm.xCall('wasm_main', argv.length, + wasm.scopedAllocMainArgv(argv)); + wasm.scopedAllocPop(scope); + if(pDir) unlink(dbFile); + logList.unshift("Done running native main(). Output:"); + dumpLogList(); + }, 50); + }/*runTests()*/; - self.sqlite3TestModule.print = log; - self.sqlite3TestModule.printErr = logErr; - sqlite3Speedtest1InitModule(self.sqlite3TestModule) + self.sqlite3TestModule.print = log; + self.sqlite3TestModule.printErr = logErr; + sqlite3Speedtest1InitModule(self.sqlite3TestModule) .then((EmscriptenModule)=>{ return EmscriptenModule.sqlite3.installOpfsVfs() .catch((e)=>{console.warn(e.message)}) .then(()=>runTests(EmscriptenModule.sqlite3)); }); - })(); - </script> - </body> +})();</script> +</body> </html> |