From b4bf1f9a9fe4fcf45e5683b40a393ae8089a084c Mon Sep 17 00:00:00 2001 From: Alexander Mahr Date: Sun, 3 Nov 2024 08:36:19 +0100 Subject: [PATCH] start repo with what exists --- README.md | 5 +++ test1.html | 7 ++++ test1.js | 59 +++++++++++++++++++++++++++++++++ test2.html | 9 +++++ test2.js | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 177 insertions(+) create mode 100644 README.md create mode 100644 test1.html create mode 100644 test1.js create mode 100644 test2.html create mode 100644 test2.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..d222132 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# some HTML+JS files (to run some tests) + +## why not node ? +a) because some should reflect browser behavior rather than node +b) why not? diff --git a/test1.html b/test1.html new file mode 100644 index 0000000..d1b710f --- /dev/null +++ b/test1.html @@ -0,0 +1,7 @@ + + + +

test1.js

+ + diff --git a/test1.js b/test1.js new file mode 100644 index 0000000..b1d8c48 --- /dev/null +++ b/test1.js @@ -0,0 +1,59 @@ +window.addEventListener("load",async ()=> { + + var info = document.createElement("div"); + info.innerHTML="both
test A: (new TextEncoder()).encode(str) and
test B: new Blob([str])
will block the UI thread equally

" + info.style.color="blue"; + document.body.appendChild(info); + var div = document.createElement("div"); + var acount=0; + var bcount=0; + var end; + var secs=10; + var done=false + document.body.appendChild(div); + (function info(){ + div.innerHTML="end in "+(end - Date.now()) + +"
acount="+acount + +"
bcount="+bcount; + if(!done) + setTimeout(info,100); + })(); + + function wait(ms=100){ + return new Promise((resolve)=>{ + setTimeout(resolve,ms); + }); + } + + await (()=>{return new Promise((resolve)=>{console.log('start promise');setTimeout(resolve,100);});})(); + var a = (new Array(20000000)).join("."); + const enc = new TextEncoder(); + var ab; + + console.log("start test a"); + end = Date.now() + secs * 1000; + while(Date.now() + + +

test2.js

+

worst case gzip

+

trying to see if the case to do gzip => ungzip is detrimental in terms of size increase for random data

+ + diff --git a/test2.js b/test2.js new file mode 100644 index 0000000..f470dd6 --- /dev/null +++ b/test2.js @@ -0,0 +1,97 @@ +window.addEventListener("load",async ()=> { + + async function nnDecompress(blob) { + const ds = new DecompressionStream("gzip"); + const decompressedStream = blob.stream().pipeThrough(ds); + return await (await new Response(decompressedStream).blob()).text(); + } + + async function nnCompress(blob) { + const cs = new CompressionStream("gzip"); + const compressedStream = blob.stream().pipeThrough(cs); + return await new Response(compressedStream).blob(); + } + + var info = document.createElement("div"); + info.innerHTML="both
test A: (new TextEncoder()).encode(str) and
test B: new Blob([str])
will block the UI thread equally

" + info.style.color="blue"; + document.body.appendChild(info); + var textarea = document.createElement("textarea"); + textarea.textContent=""; + textarea.style.width="90vw"; + textarea.style.height="100vh"; + document.body.appendChild(textarea); + + + + for(var i=0; i<=23; i++) + { + let bytes = 1 << i; + let array = new Uint8Array(bytes); + let zerozipped = await nnCompress(new Blob([array])); + crypto.getRandomValues(array); + let zipped = await nnCompress(new Blob([array])); + textarea.textContent+="\n"+i+"\n"+"with "+bytes+" bytes"+"\n"+ + "===> "+zipped.size+" compression ("+(((zipped.size/bytes*10000)|0)/100)+"%)\n"+ + "===> "+zerozipped.size+" compression ("+(((zerozipped.size/bytes*10000)|0)/100)+"%)\n"+ + Array.from(new Uint8Array(await zipped.slice(0,32).arrayBuffer())).map((e)=>{ return ("0"+e.toString(16)).slice(-2);}).join(" ")+"\n"; + Array.from(new Uint8Array(await zerozipped.slice(0,32).arrayBuffer())).map((e)=>{ return ("0"+e.toString(16)).slice(-2);}).join(" ")+"\n"; + +// var gzippeduint = new Uint8Array(await gzipped.arrayBuffer()); + + } + + +// var div = document.createElement("div"); +// var acount=0; +// var bcount=0; +// var end; +// var secs=10; +// var done=false +// document.body.appendChild(div); +// (function info(){ +// div.innerHTML="end in "+(end - Date.now()) +// +"
acount="+acount +// +"
bcount="+bcount; +// if(!done) +// setTimeout(info,100); +// })(); +// +// function wait(ms=100){ +// return new Promise((resolve)=>{ +// setTimeout(resolve,ms); +// }); +// } +// +// await (()=>{return new Promise((resolve)=>{console.log('start promise');setTimeout(resolve,100);});})(); +// var a = (new Array(20000000)).join("."); +// const enc = new TextEncoder(); +// var ab; +// +// console.log("start test a"); +// end = Date.now() + secs * 1000; +// while(Date.now()