Skip to content

Commit c360722

Browse files
committed
improve dioxus
1 parent d68832d commit c360722

File tree

7 files changed

+132
-173
lines changed

7 files changed

+132
-173
lines changed

frameworks/keyed/dioxus/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ edition = "2021"
66
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
77

88
[dependencies]
9-
dioxus = { version = "0.5.0", features = ["web"] }
9+
dioxus = { version = "0.5.1", features = ["web"] }
1010
js-sys = "*"
11+
getrandom = { version = "0.2.7", features = ["js"] }
12+
rand = { version = "0.8.5", features = ["small_rng"] }
1113
slab = "0.4.8"
1214

1315
[profile.release]

frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!doctype html><html lang=en><meta charset=UTF-8><title>Dioxus</title><link href=/css/currentStyle.css rel=stylesheet><script type=module>import a,*as b from"/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark.js";a(`/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark_bg.wasm`);window.wasmBindings=b</script><link as=fetch crossorigin href=/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark_bg.wasm integrity=sha384-0fG7IM0dEGMwvLtNdPHdrRs6sceFgb-PUOfhYXuIQ-MoBankkgBj4Rl4Zw_8GsjX rel=preload type=application/wasm><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark.js integrity=sha384-nR8YMCfNuetlZ7dF1gZaS-VdJbqb-MhyzfILyeQQ3Oc-Il_hmUTmXYcomq3iOHHQ rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-interpreter-js-4774033abde10986/inline0.js integrity=sha384-aa1wf8FKNLLWjGT7WlQ-Cj19ytzXDkS3y0IawKUn6opfisjmmeXkdqaIdRqmi_SS rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-interpreter-js-4774033abde10986/src/js/common.js integrity=sha384-lNXbLTw7Z18z5HtM0HV3R7_8J-II5Ei18I53QeIZolR-l1nGEBr27UjMtT_DJpiC rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-web-51ae765eeff3e7fa/inline0.js integrity=sha384-xqSmg18C2FmchYWi9fb4cSqOW4ZNNo4b7NWZK1eW-fOqg4no-2F-zETwKUf1PJy3 rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-web-51ae765eeff3e7fa/inline1.js integrity=sha384-2v8X0XAeO26J0vmoLhIbIeAjVzFnrY9iLhlYJcksTMp7Ip2tbDcoX4vD_hCan7M7 rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-web-51ae765eeff3e7fa/src/eval.js integrity=sha384-O0D0g9-cXudxTrzdAXYhjXnsL7oWNAzJlU2rv4ODwkbWi11CK6ZE3wz5cPJ3Jh5w rel=modulepreload></head><body><div id=main></div><script src=/frameworks/keyed/dioxus/isKeyed.js></script></body></html>
1+
<!doctype html><html lang=en><meta charset=UTF-8><title>Dioxus</title><link href=/css/currentStyle.css rel=stylesheet><script type=module>import a,*as b from"/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark.js";a(`/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark_bg.wasm`);window.wasmBindings=b</script><link as=fetch crossorigin href=/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark_bg.wasm integrity=sha384-kCFLG6a9WJAnQcYMt5V9KMVnz2xeC2YJWciSvBsA9wGMHbhdSsJmXaNlvBpE29bO rel=preload type=application/wasm><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/dioxus_benchmark.js integrity=sha384-kHpGA-Rs7P9hz5w0RQeGSB5ymMA3EKMg9nE995-GlsZ7UqZTDAotG0-kU4EaZq3C rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-interpreter-js-4774033abde10986/inline0.js integrity=sha384-GWebH3S-3UMOFt5JciEBc1m8VVbR5C2yPOz8bkQsPloDQacpmH4LRiA-D1GYcCmt rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-interpreter-js-4774033abde10986/src/js/common.js integrity=sha384-lNXbLTw7Z18z5HtM0HV3R7_8J-II5Ei18I53QeIZolR-l1nGEBr27UjMtT_DJpiC rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-web-51ae765eeff3e7fa/inline0.js integrity=sha384-xqSmg18C2FmchYWi9fb4cSqOW4ZNNo4b7NWZK1eW-fOqg4no-2F-zETwKUf1PJy3 rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-web-51ae765eeff3e7fa/inline1.js integrity=sha384-2v8X0XAeO26J0vmoLhIbIeAjVzFnrY9iLhlYJcksTMp7Ip2tbDcoX4vD_hCan7M7 rel=modulepreload><link crossorigin href=/frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-web-51ae765eeff3e7fa/src/eval.js integrity=sha384-O0D0g9-cXudxTrzdAXYhjXnsL7oWNAzJlU2rv4ODwkbWi11CK6ZE3wz5cPJ3Jh5w rel=modulepreload></head><body><div id=main></div><script src=/frameworks/keyed/dioxus/isKeyed.js></script></body></html>

frameworks/keyed/dioxus/bundled-dist/snippets/dioxus-interpreter-js-4774033abde10986/inline0.js

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
function setAttributeInner(node,field,value,ns){if(ns==="style"){node.style.setProperty(field,value);return}if(ns){node.setAttributeNS(ns,field,value);return}switch(field){case"value":if(node.value!==value)node.value=value;break;case"initial_value":node.defaultValue=value;break;case"checked":node.checked=truthy(value);break;case"initial_checked":node.defaultChecked=truthy(value);break;case"selected":node.selected=truthy(value);break;case"initial_selected":node.defaultSelected=truthy(value);break;case"dangerous_inner_html":node.innerHTML=value;break;default:if(!truthy(value)&&isBoolAttr(field))node.removeAttribute(field);else node.setAttribute(field,value)}}var truthy=function(val){return val==="true"||val===!0},isBoolAttr=function(field){switch(field){case"allowfullscreen":case"allowpaymentrequest":case"async":case"autofocus":case"autoplay":case"checked":case"controls":case"default":case"defer":case"disabled":case"formnovalidate":case"hidden":case"ismap":case"itemscope":case"loop":case"multiple":case"muted":case"nomodule":case"novalidate":case"open":case"playsinline":case"readonly":case"required":case"reversed":case"selected":case"truespeed":case"webkitdirectory":return!0;default:return!1}};class BaseInterpreter{global;local;root;handler;nodes;stack;templates;m;constructor(){}initialize(root,handler=null){if(this.global={},this.local={},this.root=root,this.nodes=[root],this.stack=[root],this.templates={},handler)this.handler=handler}createListener(event_name,element,bubbles){if(bubbles)if(this.global[event_name]===void 0)this.global[event_name]={active:1,callback:this.handler},this.root.addEventListener(event_name,this.handler);else this.global[event_name].active++;else{const id=element.getAttribute("data-dioxus-id");if(!this.local[id])this.local[id]={};element.addEventListener(event_name,this.handler)}}removeListener(element,event_name,bubbles){if(bubbles)this.removeBubblingListener(event_name);else this.removeNonBubblingListener(element,event_name)}removeBubblingListener(event_name){if(this.global[event_name].active--,this.global[event_name].active===0)this.root.removeEventListener(event_name,this.global[event_name].callback),delete this.global[event_name]}removeNonBubblingListener(element,event_name){const id=element.getAttribute("data-dioxus-id");if(delete this.local[id][event_name],Object.keys(this.local[id]).length===0)delete this.local[id];element.removeEventListener(event_name,this.handler)}removeAllNonBubblingListeners(element){const id=element.getAttribute("data-dioxus-id");delete this.local[id]}getNode(id){return this.nodes[id]}appendChildren(id,many){const root=this.nodes[id],els=this.stack.splice(this.stack.length-many);for(let k=0;k<many;k++)root.appendChild(els[k])}loadChild(ptr,len){let node=this.stack[this.stack.length-1],ptr_end=ptr+len;for(;ptr<ptr_end;ptr++){let end=this.m.getUint8(ptr);for(node=node.firstChild;end>0;end--)node=node.nextSibling}return node}saveTemplate(nodes,tmpl_id){this.templates[tmpl_id]=nodes}hydrate(ids){const hydrateNodes=document.querySelectorAll("[data-node-hydration]");for(let i=0;i<hydrateNodes.length;i++){const hydrateNode=hydrateNodes[i],split=hydrateNode.getAttribute("data-node-hydration").split(","),id=ids[parseInt(split[0])];if(this.nodes[id]=hydrateNode,split.length>1){hydrateNode.listening=split.length-1,hydrateNode.setAttribute("data-dioxus-id",id.toString());for(let j=1;j<split.length;j++){const split2=split[j].split(":"),event_name=split2[0],bubbles=split2[1]==="1";this.createListener(event_name,hydrateNode,bubbles)}}}const treeWalker=document.createTreeWalker(document.body,NodeFilter.SHOW_COMMENT);let currentNode=treeWalker.nextNode();while(currentNode){const split=currentNode.textContent.split("node-id");if(split.length>1)this.nodes[ids[parseInt(split[1])]]=currentNode.nextSibling;currentNode=treeWalker.nextNode()}}setAttributeInner(node,field,value,ns){setAttributeInner(node,field,value,ns)}}export{BaseInterpreter};
33

4-
let many,bubbles,value,id,field,ns;
4+
let bubbles,many,id,field,value,ns;
55
export class RawInterpreter extends BaseInterpreter {
66
constructor(r) {
77
super();
@@ -14,20 +14,33 @@
1414
this.e = null;
1515
this.z = null;
1616
this.metaflags = null;
17-
this.attr = [];
18-
this.attr_cache_hit = null;
19-
this.attr_cache_idx;
20-
this.get_attr = function() {
21-
this.attr_cache_idx = this.u8buf[this.u8bufp++];
22-
if(this.attr_cache_idx & 128){
23-
this.attr_cache_hit=this.s.substring(this.sp,this.sp+=this.u8buf[this.u8bufp++]);
24-
this.attr[this.attr_cache_idx&4294967167]=this.attr_cache_hit;
25-
return this.attr_cache_hit;
17+
this.u32buf=null;this.u32bufp=null;this.evt = [];
18+
this.evt_cache_hit = null;
19+
this.evt_cache_idx;
20+
this.get_evt = function() {
21+
this.evt_cache_idx = this.u8buf[this.u8bufp++];
22+
if(this.evt_cache_idx & 128){
23+
this.evt_cache_hit=this.s.substring(this.sp,this.sp+=this.u8buf[this.u8bufp++]);
24+
this.evt[this.evt_cache_idx&4294967167]=this.evt_cache_hit;
25+
return this.evt_cache_hit;
2626
}
2727
else{
28-
return this.attr[this.attr_cache_idx&4294967167];
28+
return this.evt[this.evt_cache_idx&4294967167];
29+
}
30+
};this.ns_cache = [];
31+
this.ns_cache_cache_hit = null;
32+
this.ns_cache_cache_idx;
33+
this.get_ns_cache = function() {
34+
this.ns_cache_cache_idx = this.u8buf[this.u8bufp++];
35+
if(this.ns_cache_cache_idx & 128){
36+
this.ns_cache_cache_hit=this.s.substring(this.sp,this.sp+=this.u8buf[this.u8bufp++]);
37+
this.ns_cache[this.ns_cache_cache_idx&4294967167]=this.ns_cache_cache_hit;
38+
return this.ns_cache_cache_hit;
39+
}
40+
else{
41+
return this.ns_cache[this.ns_cache_cache_idx&4294967167];
2942
}
30-
};this.el = [];
43+
};this.s = "";this.lsp = null;this.sp = null;this.sl = null;this.c = new TextDecoder();this.el = [];
3144
this.el_cache_hit = null;
3245
this.el_cache_idx;
3346
this.get_el = function() {
@@ -40,18 +53,18 @@
4053
else{
4154
return this.el[this.el_cache_idx&4294967167];
4255
}
43-
};this.s = "";this.lsp = null;this.sp = null;this.sl = null;this.c = new TextDecoder();this.evt = [];
44-
this.evt_cache_hit = null;
45-
this.evt_cache_idx;
46-
this.get_evt = function() {
47-
this.evt_cache_idx = this.u8buf[this.u8bufp++];
48-
if(this.evt_cache_idx & 128){
49-
this.evt_cache_hit=this.s.substring(this.sp,this.sp+=this.u8buf[this.u8bufp++]);
50-
this.evt[this.evt_cache_idx&4294967167]=this.evt_cache_hit;
51-
return this.evt_cache_hit;
56+
};this.u16buf=null;this.u16bufp=null;this.u8buf=null;this.u8bufp=null;this.attr = [];
57+
this.attr_cache_hit = null;
58+
this.attr_cache_idx;
59+
this.get_attr = function() {
60+
this.attr_cache_idx = this.u8buf[this.u8bufp++];
61+
if(this.attr_cache_idx & 128){
62+
this.attr_cache_hit=this.s.substring(this.sp,this.sp+=this.u8buf[this.u8bufp++]);
63+
this.attr[this.attr_cache_idx&4294967167]=this.attr_cache_hit;
64+
return this.attr_cache_hit;
5265
}
5366
else{
54-
return this.evt[this.evt_cache_idx&4294967167];
67+
return this.attr[this.attr_cache_idx&4294967167];
5568
}
5669
};this.namespace = [];
5770
this.namespace_cache_hit = null;
@@ -66,19 +79,6 @@
6679
else{
6780
return this.namespace[this.namespace_cache_idx&4294967167];
6881
}
69-
};this.u32buf=null;this.u32bufp=null;this.u16buf=null;this.u16bufp=null;this.u8buf=null;this.u8bufp=null;this.ns_cache = [];
70-
this.ns_cache_cache_hit = null;
71-
this.ns_cache_cache_idx;
72-
this.get_ns_cache = function() {
73-
this.ns_cache_cache_idx = this.u8buf[this.u8bufp++];
74-
if(this.ns_cache_cache_idx & 128){
75-
this.ns_cache_cache_hit=this.s.substring(this.sp,this.sp+=this.u8buf[this.u8bufp++]);
76-
this.ns_cache[this.ns_cache_cache_idx&4294967167]=this.ns_cache_cache_hit;
77-
return this.ns_cache_cache_hit;
78-
}
79-
else{
80-
return this.ns_cache[this.ns_cache_cache_idx&4294967167];
81-
}
8282
};
8383
}
8484

@@ -92,7 +92,11 @@
9292
this.ls=this.m.getUint32(this.d+6*4,true);
9393
}
9494
this.p=this.ls;
95-
if (this.metaflags&1){
95+
if ((this.metaflags>>>3)&1){
96+
this.t = this.m.getUint32(this.d+3*4,true);
97+
this.u32buf=new Uint32Array(this.m.buffer,this.t,((this.m.buffer.byteLength-this.t)-(this.m.buffer.byteLength-this.t)%4)/4);
98+
}
99+
this.u32bufp=0;if (this.metaflags&1){
96100
this.lsp = this.m.getUint32(this.d+1*4,true);
97101
}
98102
if ((this.metaflags>>>2)&1) {
@@ -118,11 +122,7 @@
118122
this.s = this.c.decode(new DataView(this.m.buffer, this.lsp, this.sl));
119123
}
120124
}
121-
this.sp=0;if ((this.metaflags>>>3)&1){
122-
this.t = this.m.getUint32(this.d+3*4,true);
123-
this.u32buf=new Uint32Array(this.m.buffer,this.t,((this.m.buffer.byteLength-this.t)-(this.m.buffer.byteLength-this.t)%4)/4);
124-
}
125-
this.u32bufp=0;if ((this.metaflags>>>4)&1){
125+
this.sp=0;if ((this.metaflags>>>4)&1){
126126
this.t = this.m.getUint32(this.d+4*4,true);
127127
this.u16buf=new Uint16Array(this.m.buffer,this.t,((this.m.buffer.byteLength-this.t)-(this.m.buffer.byteLength-this.t)%2)/2);
128128
}

frameworks/keyed/dioxus/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "Benchmark for Dioxus",
55
"license": "ISC",
66
"js-framework-benchmark": {
7-
"frameworkVersion": "0.5.0",
7+
"frameworkVersion": "0.5.1",
88
"frameworkHomeURL": "https://dioxuslabs.com/",
99
"issues": [
1010
1139

0 commit comments

Comments
 (0)