1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="UTF-8 ">
5+ < meta http-equiv ="X-UA-Compatible " content ="IE=edge ">
6+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
7+ < title > Lightning JS Framework benchmark</ title >
8+ < style >
9+ body {
10+ font-family : Arial, sans-serif;
11+ margin : 0 ;
12+ padding : 0 ;
13+ }
14+ table {
15+ width : 100% ;
16+ border-collapse : collapse;
17+ }
18+ th , td {
19+ border : 1px solid # ddd ;
20+ padding : 8px ;
21+ text-align : left;
22+ }
23+ th {
24+ background-color : # f2f2f2 ;
25+ }
26+ h2 {
27+ margin : 0 ;
28+ }
29+ p {
30+ margin : 0 ;
31+ }
32+ div {
33+ padding : 10px ;
34+ }
35+ span {
36+ font-weight : bold;
37+ }
38+ </ style >
39+ </ head >
40+ < body > < div >
41+ < h2 > Results for Lightning JS Framework benchmark</ h2 >
42+ < p > The benchmark was run on < span > darwin 24.5.0 arm64</ span > on a < span > Apple M3 Max 14 and 36.00 GB memory</ span > </ p >
43+ < p > Tests where executed on browser version: < span id ="browserVersion "> Chromium 128.0.6613.18</ span > using PlayWright</ p >
44+ </ div > < div >
45+ < h2 > Results</ h2 >
46+ < p > Tests are run by executing an operation and waiting for the WebGL rennder to be Idle</ p >
47+ < p > Results are the time in milliseconds to execute the operation</ p >
48+ < p > All operations are executed on 6x CPU slowdown</ p >
49+ </ div > < table >
50+ < thead >
51+ < tr >
52+ < th >
53+ < b > Name</ b >
54+ < br >
55+ Duration for...
56+ </ th >
57+ < th > renderer 2.14.3</ th > < th > renderer-beta 3.0.0-beta9</ th > < th > blits 1.31.0</ th > < th > solid 2.8.1</ th > < th > renderer-beta-canvasfonts 3.0.0-beta9</ th > < th > lightning2-core 2.14.0</ th > < th > renderer-canvasfonts 2.14.3</ th > < th > lightning2 2.14.0</ th >
58+ </ tr >
59+
60+ </ thead >
61+ < tbody >
62+ < tr >
63+ < th >
64+ < b > create rows</ b >
65+ < div > creating 1,000 nodes. (5 warmup runs)</ div >
66+ </ th >
67+ < td style ="background-color: rgb(101, 192, 124); color: rgb(0, 0, 0); "> 54.82ms ±29.10 (1.01)</ td > < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 53.68ms ±23.30 (1.00)</ td > < td style ="background-color: rgb(139, 203, 126); color: rgb(0, 0, 0); "> 76.62ms ±29.40 (1.26)</ td > < td style ="background-color: rgb(148, 205, 127); color: rgb(0, 0, 0); "> 82.22ms ±20.40 (1.31)</ td > < td style ="background-color: rgb(251, 151, 117); color: rgb(0, 0, 0); "> 345.34ms ±35.90 (3.29)</ td > < td style ="background-color: rgb(253, 192, 124); color: rgb(0, 0, 0); "> 248.76ms ±114.40 (2.67)</ td > < td style ="background-color: rgb(249, 105, 108); color: rgb(0, 0, 0); "> 845.40ms ±177.40 (5.84)</ td > < td style ="background-color: rgb(249, 105, 108); color: rgb(0, 0, 0); "> 502.58ms ±183.20 (4.18)</ td >
68+ </ tr >
69+ < tr >
70+ < th >
71+ < b > replace all rows</ b >
72+ < div > updating all 1,000 nodes. (5 warmup runs)</ div >
73+ </ th >
74+ < td style ="background-color: rgb(105, 193, 124); color: rgb(0, 0, 0); "> 33.80ms ±10.40 (1.04)</ td > < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 31.76ms ±7.70 (1.00)</ td > < td style ="background-color: rgb(148, 205, 127); color: rgb(0, 0, 0); "> 51.74ms ±9.00 (1.31)</ td > < td style ="background-color: rgb(242, 232, 131); color: rgb(0, 0, 0); "> 101.30ms ±43.70 (1.91)</ td > < td style ="background-color: rgb(251, 149, 116); color: rgb(0, 0, 0); "> 271.62ms ±59.60 (3.33)</ td > < td style ="background-color: rgb(249, 105, 108); color: rgb(0, 0, 0); "> 858.54ms ±180.70 (6.34)</ td > < td style ="background-color: rgb(249, 105, 108); color: rgb(0, 0, 0); "> 838.86ms ±275.50 (6.25)</ td > < td style ="background-color: rgb(249, 105, 108); color: rgb(0, 0, 0); "> 865.02ms ±235.40 (6.36)</ td >
75+ </ tr >
76+ < tr >
77+ < th >
78+ < b > partial update rows</ b >
79+ < div > updating every 10th node for 1,000 nodes. (5 warmup runs)</ div >
80+ </ th >
81+ < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 24.78ms ±4.50 (1.00)</ td > < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 24.66ms ±2.20 (1.00)</ td > < td style ="background-color: rgb(105, 193, 124); color: rgb(0, 0, 0); "> 26.48ms ±2.90 (1.04)</ td > < td style ="background-color: rgb(255, 226, 130); color: rgb(0, 0, 0); "> 96.96ms ±33.70 (2.15)</ td > < td style ="background-color: rgb(147, 205, 126); color: rgb(0, 0, 0); "> 39.90ms ±7.20 (1.31)</ td > < td style ="background-color: rgb(250, 127, 112); color: rgb(0, 0, 0); "> 250.58ms ±11.30 (3.66)</ td > < td style ="background-color: rgb(254, 203, 126); color: rgb(0, 0, 0); "> 126.40ms ±230.70 (2.50)</ td > < td style ="background-color: rgb(250, 127, 112); color: rgb(0, 0, 0); "> 250.88ms ±24.00 (3.67)</ td >
82+ </ tr >
83+ < tr >
84+ < th >
85+ < b > select row</ b >
86+ < div > selecting a node at random. (5 warmup runs)</ div >
87+ </ th >
88+ < td style ="background-color: rgb(101, 192, 124); color: rgb(0, 0, 0); "> 30.28ms ±15.90 (1.01)</ td > < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 28.54ms ±9.00 (1.00)</ td > < td style ="background-color: rgb(101, 192, 124); color: rgb(0, 0, 0); "> 30.70ms ±14.60 (1.01)</ td > < td style ="background-color: rgb(141, 203, 126); color: rgb(0, 0, 0); "> 98.82ms ±45.70 (1.27)</ td > < td style ="background-color: rgb(108, 194, 124); color: rgb(0, 0, 0); "> 38.68ms ±13.10 (1.06)</ td > < td style ="background-color: rgb(170, 212, 128); color: rgb(0, 0, 0); "> 207.72ms ±11.80 (1.46)</ td > < td style ="background-color: rgb(116, 196, 125); color: rgb(0, 0, 0); "> 49.66ms ±25.20 (1.11)</ td > < td style ="background-color: rgb(172, 212, 128); color: rgb(0, 0, 0); "> 212.88ms ±15.90 (1.46)</ td >
89+ </ tr >
90+ < tr >
91+ < th >
92+ < b > swap rows</ b >
93+ < div > swapping 2 nodes. (5 warmup runs)</ div >
94+ </ th >
95+ < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 27.16ms ±13.70 (1.00)</ td > < td style ="background-color: rgb(100, 191, 124); color: rgb(0, 0, 0); "> 27.88ms ±11.60 (1.00)</ td > < td style ="background-color: rgb(106, 193, 124); color: rgb(0, 0, 0); "> 37.76ms ±9.80 (1.04)</ td > < td style ="background-color: rgb(128, 199, 125); color: rgb(0, 0, 0); "> 99.86ms ±53.50 (1.18)</ td > < td style ="background-color: rgb(100, 191, 124); color: rgb(0, 0, 0); "> 29.04ms ±20.40 (1.01)</ td > < td style ="background-color: rgb(146, 204, 126); color: rgb(0, 0, 0); "> 204.18ms ±6.40 (1.30)</ td > < td style ="background-color: rgb(103, 192, 124); color: rgb(0, 0, 0); "> 32.24ms ±26.30 (1.02)</ td > < td style ="background-color: rgb(146, 204, 126); color: rgb(0, 0, 0); "> 203.72ms ±5.40 (1.30)</ td >
96+ </ tr >
97+ < tr >
98+ < th >
99+ < b > remove row</ b >
100+ < div > removing a node. (5 warmup runs)</ div >
101+ </ th >
102+ < td style ="background-color: rgb(102, 192, 124); color: rgb(0, 0, 0); "> 23.96ms ±3.90 (1.02)</ td > < td style ="background-color: rgb(110, 194, 125); color: rgb(0, 0, 0); "> 26.28ms ±3.80 (1.07)</ td > < td style ="background-color: rgb(112, 195, 125); color: rgb(0, 0, 0); "> 26.84ms ±2.60 (1.08)</ td > < td style ="background-color: rgb(111, 194, 125); color: rgb(0, 0, 0); "> 26.58ms ±3.50 (1.08)</ td > < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 23.14ms ±3.00 (1.00)</ td > < td style ="background-color: rgb(251, 159, 118); color: rgb(0, 0, 0); "> 204.54ms ±6.50 (3.17)</ td > < td style ="background-color: rgb(117, 196, 125); color: rgb(0, 0, 0); "> 28.34ms ±2.50 (1.11)</ td > < td style ="background-color: rgb(251, 159, 118); color: rgb(0, 0, 0); "> 205.18ms ±6.80 (3.18)</ td >
103+ </ tr >
104+ < tr >
105+ < th >
106+ < b > create many rows</ b >
107+ < div > creating 10,000 nodes. (5 warmup runs)</ div >
108+ </ th >
109+ < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 266.20ms ±30.70 (1.00)</ td > < td style ="background-color: rgb(102, 192, 124); color: rgb(0, 0, 0); "> 275.30ms ±26.50 (1.02)</ td > < td style ="background-color: rgb(160, 209, 127); color: rgb(0, 0, 0); "> 480.28ms ±88.90 (1.39)</ td > < td style ="background-color: rgb(169, 211, 128); color: rgb(0, 0, 0); "> 517.74ms ±37.30 (1.45)</ td > < td style ="background-color: rgb(254, 207, 127); color: rgb(0, 0, 0); "> 1315.50ms ±47.60 (2.45)</ td > < td style ="background-color: rgb(130, 200, 126); color: rgb(0, 0, 0); "> 369.42ms ±11.20 (1.20)</ td > < td style ="background-color: rgb(252, 169, 120); color: rgb(0, 0, 0); "> 1918.08ms ±273.30 (3.02)</ td > < td style ="background-color: rgb(250, 128, 112); color: rgb(0, 0, 0); "> 2685.76ms ±110.50 (3.65)</ td >
110+ </ tr >
111+ < tr >
112+ < th >
113+ < b > append rows</ b >
114+ < div > appending 1,000 nodes to 1,000 nodes. (5 warmup runs)</ div >
115+ </ th >
116+ < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 283.14ms ±50.90 (1.00)</ td > < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 282.74ms ±28.80 (1.00)</ td > < td style ="background-color: rgb(162, 209, 127); color: rgb(0, 0, 0); "> 524.88ms ±93.20 (1.41)</ td > < td style ="background-color: rgb(164, 210, 127); color: rgb(0, 0, 0); "> 534.70ms ±48.00 (1.42)</ td > < td style ="background-color: rgb(254, 210, 127); color: rgb(0, 0, 0); "> 1391.84ms ±63.10 (2.40)</ td > < td style ="background-color: rgb(100, 191, 124); color: rgb(0, 0, 0); "> 287.70ms ±21.60 (1.01)</ td > < td style ="background-color: rgb(252, 180, 122); color: rgb(0, 0, 0); "> 1898.04ms ±74.50 (2.85)</ td > < td style ="background-color: rgb(251, 139, 114); color: rgb(0, 0, 0); "> 2720.20ms ±21.20 (3.47)</ td >
117+ </ tr >
118+ < tr >
119+ < th >
120+ < b > clear rows</ b >
121+ < div > removing all nodes. (5 warmup runs)</ div >
122+ </ th >
123+ < td style ="background-color: rgb(99, 191, 124); color: rgb(0, 0, 0); "> 14.70ms ±2.80 (1.00)</ td > < td style ="background-color: rgb(101, 192, 124); color: rgb(0, 0, 0); "> 15.16ms ±5.70 (1.01)</ td > < td style ="background-color: rgb(113, 195, 125); color: rgb(0, 0, 0); "> 18.10ms ±7.10 (1.09)</ td > < td style ="background-color: rgb(107, 193, 124); color: rgb(0, 0, 0); "> 16.48ms ±3.70 (1.05)</ td > < td style ="background-color: rgb(102, 192, 124); color: rgb(0, 0, 0); "> 15.44ms ±3.50 (1.02)</ td > < td style ="background-color: rgb(254, 207, 127); color: rgb(0, 0, 0); "> 123.28ms ±195.40 (2.44)</ td > < td style ="background-color: rgb(124, 198, 125); color: rgb(0, 0, 0); "> 21.06ms ±4.20 (1.16)</ td > < td style ="background-color: rgb(255, 226, 130); color: rgb(0, 0, 0); "> 91.24ms ±111.80 (2.15)</ td >
124+ </ tr >
125+ < tr >
126+ < th >
127+ < b > Overall</ b >
128+ < div > Average mean of all tests</ div >
129+ </ th >
130+ < td > 1.01</ td > < td > 1.01</ td > < td > 1.18</ td > < td > 1.42</ td > < td > 1.87</ td > < td > 2.58</ td > < td > 2.76</ td > < td > 3.27</ td >
131+ </ tr >
132+ </ tbody >
133+ < thead >
134+ < tr >
135+ < th >
136+ < b > Name</ b >
137+ < br >
138+ Memory for...
139+ </ th >
140+ < th > renderer 2.14.3</ th > < th > renderer-beta 3.0.0-beta9</ th > < th > blits 1.31.0</ th > < th > solid 2.8.1</ th > < th > renderer-beta-canvasfonts 3.0.0-beta9</ th > < th > lightning2-core 2.14.0</ th > < th > renderer-canvasfonts 2.14.3</ th > < th > lightning2 2.14.0</ th >
141+ </ tr >
142+ </ thead >
143+ < tbody >
144+ < tr >
145+ < th >
146+ < b > create 20k nodes</ b >
147+ < div > creating 20k nodes.</ div >
148+ </ th >
149+ < td > 31.30MB (created in 388.40ms)</ td > < td > 25.50MB (created in 470.80ms)</ td > < td > 38.32MB (created in 284.70ms)</ td > < td > 46.45MB (created in 363.70ms)</ td > < td > 29.71MB (created in 469.70ms)</ td > < td > Failed</ td > < td > 29.26MB (created in 379.00ms)</ td > < td > Failed</ td >
150+ </ tr >
151+ </ tbody >
152+ < thead >
153+ < tr >
154+ < th >
155+ < b > Name</ b >
156+ < br >
157+ File size for...
158+ </ th >
159+ < th > renderer 2.14.3</ th > < th > renderer-beta 3.0.0-beta9</ th > < th > blits 1.31.0</ th > < th > solid 2.8.1</ th > < th > renderer-beta-canvasfonts 3.0.0-beta9</ th > < th > lightning2-core 2.14.0</ th > < th > renderer-canvasfonts 2.14.3</ th > < th > lightning2 2.14.0</ th >
160+ </ tr >
161+ </ thead >
162+ < tbody >
163+ < tr >
164+ < th >
165+ < b > bundle size</ b >
166+ < div > JavaScript size of the framework</ div >
167+ </ th >
168+ < td > 163.09 KB</ td > < td > 135.15 KB</ td > < td > 284.42 KB</ td > < td > 227.48 KB</ td > < td > 131.91 KB</ td > < td > 330.01 KB</ td > < td > 145.95 KB</ td > < td > 330.01 KB</ td >
169+ </ tr >
170+ </ tbody >
171+ </ table > </ body >
172+ </ html >
0 commit comments