Perf improvements - #896
Merged
Merged
Conversation
…~2x faster `LineChart` mount)
… using layer-specofic imports (ex. layerchart/svg)
…s-based charts (~2x faster with 10 series)
…ory growth while streaming, issue #585)
🦋 Changeset detectedLatest commit: 4aa1b6f The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
commit: |
Contributor
built with Refined Cloudflare Pages Action⚡ Cloudflare Pages Deployment
|
Contributor
Bundle Size Analysis
|
| Item | Current | New | Change |
|---|---|---|---|
🔴 Labels.svg |
133.86 KB 31.67 gz |
214.50 KB 52.88 gz |
+80.65 KB (+60.2%) +21.21 gz (+67.0%) |
🔴 Labels |
157.68 KB 36.67 gz |
236.96 KB 58.24 gz |
+79.28 KB (+50.3%) +21.57 gz (+58.8%) |
🔴 Labels.canvas |
137.53 KB 33.00 gz |
207.96 KB 52.11 gz |
+70.43 KB (+51.2%) +19.11 gz (+57.9%) |
🔴 Labels.html |
132.52 KB 31.31 gz |
169.78 KB 41.76 gz |
+37.26 KB (+28.1%) +10.45 gz (+33.4%) |
🔴 Voronoi |
177.50 KB 46.65 gz |
179.98 KB 47.34 gz |
+2.48 KB (+1.4%) +0.69 gz (+1.5%) |
🔴 Voronoi.svg |
175.48 KB 46.52 gz |
177.96 KB 47.22 gz |
+2.48 KB (+1.4%) +0.70 gz (+1.5%) |
🔴 Voronoi.canvas |
174.50 KB 46.03 gz |
176.98 KB 46.74 gz |
+2.48 KB (+1.4%) +0.71 gz (+1.5%) |
🔴 Image.canvas |
12.79 KB 3.75 gz |
12.98 KB 3.76 gz |
+0.18 KB (+1.4%) +0.01 gz (+0.3%) |
🔴 GeoProjection |
4.41 KB 1.41 gz |
4.50 KB 1.44 gz |
+0.10 KB (+2.2%) +0.03 gz (+2.1%) |
Use-Case Scenarios
Core (7 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟡 core-line |
220.05 KB 57.29 gz |
220.26 KB 57.38 gz |
+0.21 KB (+0.1%) +0.08 gz (+0.1%) |
🟡 core-canvas |
219.35 KB 57.95 gz |
219.39 KB 58.04 gz |
+0.04 KB (+0.0%) +0.09 gz (+0.2%) |
🟡 core-scatter |
217.29 KB 56.16 gz |
217.71 KB 56.29 gz |
+0.42 KB (+0.2%) +0.12 gz (+0.2%) |
🟡 core-geo |
213.58 KB 55.88 gz |
213.63 KB 55.93 gz |
+0.04 KB (+0.0%) +0.05 gz (+0.1%) |
🟡 core-html |
201.22 KB 52.51 gz |
201.26 KB 52.57 gz |
+0.04 KB (+0.0%) +0.06 gz (+0.1%) |
🟡 core-svg |
199.35 KB 52.06 gz |
199.39 KB 52.13 gz |
+0.04 KB (+0.0%) +0.08 gz (+0.2%) |
🟡 core |
199.34 KB 52.10 gz |
199.38 KB 52.15 gz |
+0.04 KB (+0.0%) +0.04 gz (+0.1%) |
Base (agnostic) (4 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟡 base-svg-agnostic |
356.30 KB 83.36 gz |
356.74 KB 83.51 gz |
+0.44 KB (+0.1%) +0.15 gz (+0.2%) |
🟡 base-canvas-agnostic |
356.30 KB 83.35 gz |
356.74 KB 83.52 gz |
+0.44 KB (+0.1%) +0.17 gz (+0.2%) |
🟡 base-html-agnostic |
356.30 KB 83.35 gz |
356.74 KB 83.52 gz |
+0.44 KB (+0.1%) +0.17 gz (+0.2%) |
🟡 base |
356.29 KB 83.36 gz |
356.74 KB 83.51 gz |
+0.44 KB (+0.1%) +0.15 gz (+0.2%) |
Base (layer-specific) (3 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟡 base-canvas |
340.92 KB 80.22 gz |
341.36 KB 80.42 gz |
+0.44 KB (+0.1%) +0.20 gz (+0.3%) |
🟡 base-html |
336.72 KB 79.19 gz |
337.15 KB 79.39 gz |
+0.43 KB (+0.1%) +0.20 gz (+0.3%) |
🟡 base-svg |
334.84 KB 78.74 gz |
335.28 KB 78.95 gz |
+0.43 KB (+0.1%) +0.21 gz (+0.3%) |
Cartesian charts (27 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟡 PieChart |
395.48 KB 91.76 gz |
395.96 KB 91.86 gz |
+0.48 KB (+0.1%) +0.11 gz (+0.1%) |
🟡 ArcChart |
388.74 KB 90.59 gz |
389.21 KB 90.73 gz |
+0.47 KB (+0.1%) +0.14 gz (+0.2%) |
🟡 LineChart |
380.33 KB 89.10 gz |
380.89 KB 89.28 gz |
+0.56 KB (+0.1%) +0.18 gz (+0.2%) |
🟡 PieChart-canvas |
378.08 KB 88.22 gz |
378.56 KB 88.42 gz |
+0.47 KB (+0.1%) +0.20 gz (+0.2%) |
🟡 AreaChart |
374.29 KB 87.32 gz |
374.77 KB 87.42 gz |
+0.48 KB (+0.1%) +0.10 gz (+0.1%) |
🟡 PieChart-svg |
372.02 KB 86.65 gz |
372.49 KB 86.85 gz |
+0.47 KB (+0.1%) +0.21 gz (+0.2%) |
🟡 ArcChart-canvas |
371.92 KB 87.15 gz |
372.38 KB 87.34 gz |
+0.47 KB (+0.1%) +0.19 gz (+0.2%) |
🟡 line-chart-interactive |
371.31 KB 86.66 gz |
371.75 KB 86.79 gz |
+0.44 KB (+0.1%) +0.13 gz (+0.2%) |
🟡 area-chart |
370.00 KB 86.34 gz |
370.48 KB 86.46 gz |
+0.48 KB (+0.1%) +0.12 gz (+0.1%) |
🟡 pie-chart |
368.59 KB 85.84 gz |
369.06 KB 85.95 gz |
+0.47 KB (+0.1%) +0.11 gz (+0.1%) |
🟡 BarChart |
366.75 KB 85.37 gz |
367.19 KB 85.54 gz |
+0.44 KB (+0.1%) +0.18 gz (+0.2%) |
🟡 ArcChart-svg |
365.85 KB 85.60 gz |
366.31 KB 85.77 gz |
+0.47 KB (+0.1%) +0.17 gz (+0.2%) |
🟡 bar-chart |
360.89 KB 84.18 gz |
361.33 KB 84.33 gz |
+0.44 KB (+0.1%) +0.16 gz (+0.2%) |
🟡 ScatterChart |
360.84 KB 84.30 gz |
361.27 KB 84.44 gz |
+0.43 KB (+0.1%) +0.14 gz (+0.2%) |
🟡 AreaChart-canvas |
358.10 KB 84.02 gz |
358.58 KB 84.20 gz |
+0.48 KB (+0.1%) +0.18 gz (+0.2%) |
🟡 scatter-chart |
357.38 KB 83.61 gz |
357.83 KB 83.76 gz |
+0.44 KB (+0.1%) +0.14 gz (+0.2%) |
🟡 line-chart |
356.80 KB 83.39 gz |
357.24 KB 83.55 gz |
+0.44 KB (+0.1%) +0.16 gz (+0.2%) |
🟡 AreaChart-svg |
352.04 KB 82.52 gz |
352.52 KB 82.76 gz |
+0.48 KB (+0.1%) +0.24 gz (+0.3%) |
🟡 BarChart-canvas |
350.25 KB 82.11 gz |
350.69 KB 82.36 gz |
+0.44 KB (+0.1%) +0.25 gz (+0.3%) |
🟡 LineChart-canvas |
347.92 KB 81.90 gz |
348.36 KB 82.13 gz |
+0.44 KB (+0.1%) +0.23 gz (+0.3%) |
🟡 ScatterChart-canvas |
344.57 KB 80.96 gz |
345.01 KB 81.17 gz |
+0.44 KB (+0.1%) +0.22 gz (+0.3%) |
🟡 BarChart-svg |
344.19 KB 80.60 gz |
344.63 KB 80.83 gz |
+0.43 KB (+0.1%) +0.23 gz (+0.3%) |
🟡 LineChart-svg |
341.86 KB 80.40 gz |
342.29 KB 80.60 gz |
+0.43 KB (+0.1%) +0.20 gz (+0.2%) |
🟡 line-chart-canvas |
340.95 KB 80.22 gz |
341.38 KB 80.43 gz |
+0.44 KB (+0.1%) +0.21 gz (+0.3%) |
🟡 ScatterChart-svg |
338.51 KB 79.48 gz |
338.94 KB 79.66 gz |
+0.43 KB (+0.1%) +0.18 gz (+0.2%) |
🟡 line-chart-html |
336.75 KB 79.20 gz |
337.18 KB 79.40 gz |
+0.43 KB (+0.1%) +0.21 gz (+0.3%) |
🟡 line-chart-svg |
334.87 KB 78.74 gz |
335.30 KB 78.94 gz |
+0.43 KB (+0.1%) +0.21 gz (+0.3%) |
Geo (3 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟡 geo-full |
430.86 KB 102.65 gz |
431.23 KB 102.72 gz |
+0.37 KB (+0.1%) +0.07 gz (+0.1%) |
🟡 geo-tiles |
378.43 KB 88.87 gz |
378.82 KB 88.99 gz |
+0.40 KB (+0.1%) +0.12 gz (+0.1%) |
🟡 geo |
373.32 KB 87.24 gz |
373.71 KB 87.35 gz |
+0.39 KB (+0.1%) +0.12 gz (+0.1%) |
Hierarchy (4 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟢 hierarchy-tree |
398.11 KB 93.50 gz |
367.51 KB 86.39 gz |
-30.61 KB (-7.7%) -7.12 gz (-7.6%) |
🟢 hierarchy-treemap |
377.63 KB 88.60 gz |
364.12 KB 85.52 gz |
-13.51 KB (-3.6%) -3.07 gz (-3.5%) |
🟢 hierarchy-pack |
377.35 KB 88.69 gz |
363.79 KB 85.54 gz |
-13.56 KB (-3.6%) -3.15 gz (-3.6%) |
🟢 dodge |
374.99 KB 87.89 gz |
361.51 KB 84.89 gz |
-13.48 KB (-3.6%) -3.00 gz (-3.4%) |
Graph / network (4 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟢 dagre |
456.68 KB 109.51 gz |
426.12 KB 102.53 gz |
-30.56 KB (-6.7%) -6.99 gz (-6.4%) |
🟢 force |
400.52 KB 94.34 gz |
369.92 KB 87.17 gz |
-30.60 KB (-7.6%) -7.17 gz (-7.6%) |
🟢 sankey |
400.25 KB 93.73 gz |
369.74 KB 86.62 gz |
-30.51 KB (-7.6%) -7.10 gz (-7.6%) |
🟡 chord |
366.02 KB 85.52 gz |
366.42 KB 85.68 gz |
+0.40 KB (+0.1%) +0.16 gz (+0.2%) |
Components (151 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🔴 Labels |
157.68 KB 36.67 gz |
236.96 KB 58.24 gz |
+79.28 KB (+50.3%) +21.57 gz (+58.8%) |
🔴 Labels.svg |
133.86 KB 31.67 gz |
214.50 KB 52.88 gz |
+80.65 KB (+60.2%) +21.21 gz (+67.0%) |
🔴 Labels.canvas |
137.53 KB 33.00 gz |
207.96 KB 52.11 gz |
+70.43 KB (+51.2%) +19.11 gz (+57.9%) |
🟡 Axis |
198.49 KB 44.44 gz |
199.16 KB 44.59 gz |
+0.67 KB (+0.3%) +0.15 gz (+0.3%) |
🟡 AnnotationPoint |
187.68 KB 45.10 gz |
189.40 KB 45.81 gz |
+1.73 KB (+0.9%) +0.72 gz (+1.6%) |
🟡 Hull |
181.11 KB 47.90 gz |
181.36 KB 47.96 gz |
+0.25 KB (+0.1%) +0.07 gz (+0.1%) |
🟡 Hull.svg |
180.30 KB 48.09 gz |
180.55 KB 48.12 gz |
+0.25 KB (+0.1%) +0.03 gz (+0.1%) |
🟡 Hull.canvas |
180.30 KB 47.78 gz |
180.55 KB 47.84 gz |
+0.25 KB (+0.1%) +0.06 gz (+0.1%) |
🔴 Voronoi |
177.50 KB 46.65 gz |
179.98 KB 47.34 gz |
+2.48 KB (+1.4%) +0.69 gz (+1.5%) |
🔴 Voronoi.svg |
175.48 KB 46.52 gz |
177.96 KB 47.22 gz |
+2.48 KB (+1.4%) +0.70 gz (+1.5%) |
🔴 Voronoi.canvas |
174.50 KB 46.03 gz |
176.98 KB 46.74 gz |
+2.48 KB (+1.4%) +0.71 gz (+1.5%) |
🟡 Calendar |
174.49 KB 41.15 gz |
175.07 KB 41.20 gz |
+0.58 KB (+0.3%) +0.05 gz (+0.1%) |
🟡 Bars |
172.18 KB 43.15 gz |
172.84 KB 43.22 gz |
+0.66 KB (+0.4%) +0.06 gz (+0.1%) |
🟡 Axis.svg |
169.39 KB 38.22 gz |
170.06 KB 38.33 gz |
+0.67 KB (+0.4%) +0.11 gz (+0.3%) |
🔴 Labels.html |
132.52 KB 31.31 gz |
169.78 KB 41.76 gz |
+37.26 KB (+28.1%) +10.45 gz (+33.4%) |
🟡 Bar |
168.17 KB 42.49 gz |
168.82 KB 42.53 gz |
+0.66 KB (+0.4%) +0.04 gz (+0.1%) |
🟡 Axis.canvas |
167.62 KB 38.31 gz |
168.29 KB 38.44 gz |
+0.67 KB (+0.4%) +0.13 gz (+0.3%) |
🟡 AnnotationPoint.svg |
165.84 KB 39.93 gz |
167.40 KB 40.52 gz |
+1.57 KB (+0.9%) +0.59 gz (+1.5%) |
🟡 Contour |
165.42 KB 45.15 gz |
165.51 KB 45.16 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 Axis.html |
164.06 KB 37.13 gz |
164.73 KB 37.25 gz |
+0.67 KB (+0.4%) +0.12 gz (+0.3%) |
🟡 Calendar.svg |
161.33 KB 39.14 gz |
161.91 KB 39.19 gz |
+0.58 KB (+0.4%) +0.05 gz (+0.1%) |
🟡 Calendar.canvas |
157.52 KB 37.93 gz |
158.10 KB 37.97 gz |
+0.58 KB (+0.4%) +0.04 gz (+0.1%) |
🟡 AnnotationRange |
157.07 KB 36.91 gz |
157.56 KB 36.94 gz |
+0.49 KB (+0.3%) +0.03 gz (+0.1%) |
🟡 AnnotationPoint.canvas |
155.45 KB 38.56 gz |
156.94 KB 39.14 gz |
+1.50 KB (+1.0%) +0.58 gz (+1.5%) |
🟡 Month |
155.08 KB 36.13 gz |
155.66 KB 36.17 gz |
+0.58 KB (+0.4%) +0.05 gz (+0.1%) |
🟡 Bars.svg |
153.72 KB 38.91 gz |
154.38 KB 38.99 gz |
+0.66 KB (+0.4%) +0.08 gz (+0.2%) |
🟡 Contour.svg |
152.29 KB 41.41 gz |
152.38 KB 41.41 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 Bars.canvas |
151.55 KB 39.14 gz |
152.21 KB 39.19 gz |
+0.65 KB (+0.4%) +0.05 gz (+0.1%) |
🟡 Contour.canvas |
151.90 KB 42.29 gz |
151.99 KB 42.30 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 ArcLabel |
151.38 KB 37.15 gz |
151.75 KB 37.20 gz |
+0.36 KB (+0.2%) +0.05 gz (+0.1%) |
🟡 Bar.svg |
150.18 KB 38.28 gz |
150.83 KB 38.33 gz |
+0.65 KB (+0.4%) +0.05 gz (+0.1%) |
🟡 Bar.canvas |
144.20 KB 37.87 gz |
144.76 KB 37.90 gz |
+0.57 KB (+0.4%) +0.03 gz (+0.1%) |
🟡 AnnotationLine |
143.14 KB 34.36 gz |
143.57 KB 34.40 gz |
+0.43 KB (+0.3%) +0.04 gz (+0.1%) |
🟡 Pie |
141.73 KB 37.71 gz |
141.97 KB 37.74 gz |
+0.24 KB (+0.2%) +0.03 gz (+0.1%) |
🟡 ArcLabel.svg |
138.17 KB 33.65 gz |
138.53 KB 33.67 gz |
+0.36 KB (+0.3%) +0.02 gz (+0.1%) |
🟡 Arc |
136.45 KB 36.66 gz |
136.69 KB 36.68 gz |
+0.24 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 Violin |
134.98 KB 31.38 gz |
135.61 KB 31.39 gz |
+0.62 KB (+0.5%) +0.01 gz (+0.0%) |
🟡 Density |
134.52 KB 36.67 gz |
134.60 KB 36.68 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 Month.canvas |
133.62 KB 32.24 gz |
134.20 KB 32.26 gz |
+0.58 KB (+0.4%) +0.02 gz (+0.1%) |
🟡 GeoTile |
132.65 KB 32.86 gz |
132.94 KB 32.97 gz |
+0.28 KB (+0.2%) +0.11 gz (+0.3%) |
🟡 Month.svg |
131.57 KB 31.17 gz |
132.15 KB 31.21 gz |
+0.58 KB (+0.4%) +0.03 gz (+0.1%) |
🟡 AnnotationRange.canvas |
131.28 KB 31.83 gz |
131.77 KB 31.87 gz |
+0.49 KB (+0.4%) +0.04 gz (+0.1%) |
🟡 AnnotationRange.svg |
131.01 KB 31.11 gz |
131.50 KB 31.14 gz |
+0.49 KB (+0.4%) +0.03 gz (+0.1%) |
🟡 Tooltip |
130.88 KB 31.75 gz |
130.98 KB 31.76 gz |
+0.10 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Pie.svg |
128.47 KB 33.81 gz |
128.70 KB 33.84 gz |
+0.24 KB (+0.2%) +0.03 gz (+0.1%) |
🟡 ArcLabel.canvas |
127.91 KB 32.41 gz |
128.18 KB 32.45 gz |
+0.27 KB (+0.2%) +0.04 gz (+0.1%) |
🟡 Threshold |
127.77 KB 31.21 gz |
128.11 KB 31.29 gz |
+0.34 KB (+0.3%) +0.08 gz (+0.3%) |
🟡 Layer |
127.58 KB 32.94 gz |
127.88 KB 32.98 gz |
+0.30 KB (+0.2%) +0.03 gz (+0.1%) |
🟡 BoxPlot |
123.71 KB 25.87 gz |
124.34 KB 25.97 gz |
+0.62 KB (+0.5%) +0.09 gz (+0.4%) |
🟡 GeoTile.canvas |
123.73 KB 30.82 gz |
124.01 KB 30.84 gz |
+0.28 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 Raster |
123.54 KB 33.36 gz |
123.72 KB 33.38 gz |
+0.19 KB (+0.2%) +0.02 gz (+0.0%) |
🟡 Arc.svg |
123.37 KB 32.81 gz |
123.61 KB 32.83 gz |
+0.24 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 AnnotationLine.svg |
122.19 KB 29.37 gz |
122.62 KB 29.39 gz |
+0.43 KB (+0.4%) +0.02 gz (+0.1%) |
🟡 AnnotationLine.canvas |
121.76 KB 29.93 gz |
122.19 KB 29.95 gz |
+0.43 KB (+0.4%) +0.02 gz (+0.1%) |
🟡 Text |
121.64 KB 30.18 gz |
121.84 KB 30.20 gz |
+0.19 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 Area |
121.32 KB 30.00 gz |
121.66 KB 30.05 gz |
+0.34 KB (+0.3%) +0.05 gz (+0.2%) |
🟡 Pie.canvas |
121.49 KB 33.25 gz |
121.63 KB 33.28 gz |
+0.15 KB (+0.1%) +0.03 gz (+0.1%) |
🟡 Density.svg |
121.38 KB 32.93 gz |
121.47 KB 32.94 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 TileImage |
121.00 KB 30.33 gz |
121.19 KB 30.35 gz |
+0.19 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 Density.canvas |
120.99 KB 33.79 gz |
121.08 KB 33.81 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.0%) |
🟡 GeoTile.svg |
119.91 KB 29.24 gz |
120.19 KB 29.26 gz |
+0.28 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 GeoSpline |
119.85 KB 31.90 gz |
119.94 KB 31.92 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Violin.svg |
118.08 KB 27.19 gz |
118.70 KB 27.22 gz |
+0.62 KB (+0.5%) +0.03 gz (+0.1%) |
🟡 Raster.svg |
117.58 KB 32.37 gz |
117.77 KB 32.38 gz |
+0.19 KB (+0.2%) +0.01 gz (+0.0%) |
🟡 Raster.html |
116.59 KB 32.06 gz |
116.78 KB 32.09 gz |
+0.19 KB (+0.2%) +0.03 gz (+0.1%) |
🟡 Arc.canvas |
116.39 KB 32.24 gz |
116.54 KB 32.26 gz |
+0.15 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Raster.canvas |
115.90 KB 31.84 gz |
116.09 KB 31.85 gz |
+0.19 KB (+0.2%) +0.01 gz (+0.0%) |
🟡 TileImage.canvas |
114.33 KB 28.85 gz |
114.52 KB 28.87 gz |
+0.19 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 Violin.canvas |
113.45 KB 27.27 gz |
114.07 KB 27.32 gz |
+0.62 KB (+0.6%) +0.04 gz (+0.2%) |
🟡 Threshold.svg |
113.06 KB 27.26 gz |
113.40 KB 27.33 gz |
+0.34 KB (+0.3%) +0.07 gz (+0.3%) |
🟡 Text.canvas |
111.20 KB 27.95 gz |
111.39 KB 27.97 gz |
+0.19 KB (+0.2%) +0.02 gz (+0.1%) |
🟡 Link |
110.85 KB 27.94 gz |
110.94 KB 27.96 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Spline |
110.38 KB 28.15 gz |
110.64 KB 28.22 gz |
+0.25 KB (+0.2%) +0.07 gz (+0.2%) |
🟡 TileImage.svg |
109.30 KB 26.99 gz |
109.50 KB 27.00 gz |
+0.19 KB (+0.2%) +0.01 gz (+0.1%) |
🟡 BoxPlot.canvas |
107.95 KB 22.68 gz |
108.57 KB 22.75 gz |
+0.62 KB (+0.6%) +0.07 gz (+0.3%) |
🟡 Area.svg |
108.00 KB 26.31 gz |
108.34 KB 26.37 gz |
+0.34 KB (+0.3%) +0.05 gz (+0.2%) |
🟡 Graticule |
107.59 KB 27.63 gz |
107.68 KB 27.65 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 GeoSpline.svg |
106.76 KB 28.18 gz |
106.85 KB 28.19 gz |
+0.09 KB (+0.1%) +0.00 gz (+0.0%) |
🟡 Threshold.canvas |
106.30 KB 26.57 gz |
106.55 KB 26.62 gz |
+0.25 KB (+0.2%) +0.05 gz (+0.2%) |
🟡 GeoCircle |
106.42 KB 27.63 gz |
106.51 KB 27.64 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 BoxPlot.svg |
105.65 KB 21.60 gz |
106.28 KB 21.68 gz |
+0.62 KB (+0.6%) +0.08 gz (+0.4%) |
🟡 Rule |
105.51 KB 24.48 gz |
105.84 KB 24.60 gz |
+0.33 KB (+0.3%) +0.12 gz (+0.5%) |
🟡 GeoPath |
102.41 KB 26.42 gz |
102.50 KB 26.44 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.1%) |
🟡 Area.canvas |
102.18 KB 25.73 gz |
102.43 KB 25.78 gz |
+0.25 KB (+0.2%) +0.05 gz (+0.2%) |
🟡 Grid.svg |
101.68 KB 22.48 gz |
102.07 KB 22.58 gz |
+0.39 KB (+0.4%) +0.10 gz (+0.5%) |
🟡 Cell |
99.55 KB 22.38 gz |
99.94 KB 22.48 gz |
+0.39 KB (+0.4%) +0.10 gz (+0.5%) |
🟡 Grid.html |
98.39 KB 21.88 gz |
98.78 KB 21.99 gz |
+0.39 KB (+0.4%) +0.11 gz (+0.5%) |
🟡 Link.svg |
97.62 KB 24.25 gz |
97.71 KB 24.27 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.1%) |
🟡 Trail |
97.53 KB 25.02 gz |
97.61 KB 25.03 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Spline.svg |
97.30 KB 24.53 gz |
97.55 KB 24.58 gz |
+0.25 KB (+0.3%) +0.05 gz (+0.2%) |
🟡 Vector |
97.03 KB 24.47 gz |
97.11 KB 24.49 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Ribbon |
95.56 KB 24.47 gz |
95.65 KB 24.49 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.1%) |
🟡 Graticule.svg |
94.27 KB 23.86 gz |
94.36 KB 23.86 gz |
+0.09 KB (+0.1%) +0.00 gz (+0.0%) |
🟡 Graticule.canvas |
93.86 KB 24.61 gz |
93.95 KB 24.63 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 GeoCircle.svg |
93.14 KB 23.83 gz |
93.23 KB 23.84 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 Spline.canvas |
91.48 KB 23.92 gz |
91.64 KB 23.96 gz |
+0.17 KB (+0.2%) +0.05 gz (+0.2%) |
🟡 GeoPath.svg |
89.32 KB 22.69 gz |
89.41 KB 22.70 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 Path |
88.13 KB 22.34 gz |
88.22 KB 22.35 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.1%) |
🟡 GeoEdgeFade |
85.82 KB 23.54 gz |
85.91 KB 23.56 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.1%) |
🟡 Rule.canvas |
85.12 KB 20.12 gz |
85.45 KB 20.21 gz |
+0.33 KB (+0.4%) +0.09 gz (+0.4%) |
🟡 Trail.svg |
84.44 KB 21.35 gz |
84.53 KB 21.36 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.1%) |
🟡 GeoEdgeFade.svg |
84.29 KB 23.06 gz |
84.38 KB 23.08 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Vector.svg |
83.94 KB 20.81 gz |
84.03 KB 20.82 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 Cell.canvas |
83.49 KB 19.88 gz |
83.87 KB 19.95 gz |
+0.39 KB (+0.5%) +0.07 gz (+0.4%) |
🟡 GeoEdgeFade.canvas |
83.07 KB 22.83 gz |
83.16 KB 22.85 gz |
+0.09 KB (+0.1%) +0.02 gz (+0.1%) |
🟡 Ribbon.svg |
82.47 KB 20.71 gz |
82.56 KB 20.71 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 Rule.svg |
81.03 KB 18.48 gz |
81.36 KB 18.58 gz |
+0.33 KB (+0.4%) +0.09 gz (+0.5%) |
🟡 Frame |
80.01 KB 19.71 gz |
80.31 KB 19.73 gz |
+0.30 KB (+0.4%) +0.02 gz (+0.1%) |
🟡 GeoPoint |
79.17 KB 19.50 gz |
79.26 KB 19.54 gz |
+0.09 KB (+0.1%) +0.04 gz (+0.2%) |
🟡 Rect |
78.19 KB 19.34 gz |
78.49 KB 19.36 gz |
+0.30 KB (+0.4%) +0.02 gz (+0.1%) |
🟡 Line |
78.07 KB 19.57 gz |
78.31 KB 19.60 gz |
+0.24 KB (+0.3%) +0.03 gz (+0.1%) |
🟡 Points |
77.80 KB 19.34 gz |
78.18 KB 19.42 gz |
+0.38 KB (+0.5%) +0.08 gz (+0.4%) |
🟡 Rule.html |
77.76 KB 17.88 gz |
78.09 KB 17.96 gz |
+0.33 KB (+0.4%) +0.09 gz (+0.5%) |
🟡 Cell.svg |
75.68 KB 17.34 gz |
76.06 KB 17.43 gz |
+0.39 KB (+0.5%) +0.09 gz (+0.5%) |
🟡 Cell.html |
75.27 KB 17.16 gz |
75.65 KB 17.23 gz |
+0.39 KB (+0.5%) +0.08 gz (+0.5%) |
🟡 Path.svg |
75.09 KB 18.70 gz |
75.18 KB 18.70 gz |
+0.09 KB (+0.1%) +0.01 gz (+0.0%) |
🟡 GeoPoint.canvas |
74.53 KB 18.45 gz |
74.62 KB 18.49 gz |
+0.09 KB (+0.1%) +0.03 gz (+0.2%) |
🟡 Frame.canvas |
72.91 KB 18.37 gz |
73.21 KB 18.39 gz |
+0.30 KB (+0.4%) +0.02 gz (+0.1%) |
🟡 Points.canvas |
72.40 KB 18.36 gz |
72.78 KB 18.44 gz |
+0.38 KB (+0.5%) +0.08 gz (+0.4%) |
🟡 Ellipse |
71.52 KB 17.95 gz |
71.75 KB 17.98 gz |
+0.23 KB (+0.3%) +0.02 gz (+0.1%) |
🟡 Rect.canvas |
71.33 KB 17.97 gz |
71.63 KB 18.00 gz |
+0.30 KB (+0.4%) +0.03 gz (+0.2%) |
🟡 Line.canvas |
67.01 KB 17.07 gz |
67.25 KB 17.09 gz |
+0.24 KB (+0.4%) +0.03 gz (+0.1%) |
🟡 Ellipse.canvas |
66.51 KB 16.88 gz |
66.74 KB 16.89 gz |
+0.23 KB (+0.3%) +0.02 gz (+0.1%) |
🟡 GeoPoint.svg |
64.93 KB 15.39 gz |
65.02 KB 15.43 gz |
+0.09 KB (+0.1%) +0.04 gz (+0.2%) |
🟡 Frame.svg |
63.74 KB 15.27 gz |
64.04 KB 15.30 gz |
+0.30 KB (+0.5%) +0.03 gz (+0.2%) |
🟡 Text.svg |
63.60 KB 16.33 gz |
63.79 KB 16.35 gz |
+0.19 KB (+0.3%) +0.02 gz (+0.1%) |
🟡 Image |
62.70 KB 15.18 gz |
62.89 KB 15.19 gz |
+0.19 KB (+0.3%) +0.01 gz (+0.1%) |
🟡 Frame.html |
62.55 KB 15.15 gz |
62.84 KB 15.17 gz |
+0.30 KB (+0.5%) +0.02 gz (+0.1%) |
🟡 Points.html |
62.25 KB 15.05 gz |
62.63 KB 15.14 gz |
+0.38 KB (+0.6%) +0.08 gz (+0.6%) |
🟡 Rect.svg |
62.16 KB 14.91 gz |
62.46 KB 14.93 gz |
+0.30 KB (+0.5%) +0.02 gz (+0.1%) |
🟡 Points.svg |
61.59 KB 14.97 gz |
61.97 KB 15.04 gz |
+0.38 KB (+0.6%) +0.07 gz (+0.5%) |
🟡 Line.svg |
61.57 KB 14.85 gz |
61.81 KB 14.86 gz |
+0.24 KB (+0.4%) +0.01 gz (+0.1%) |
🟡 Text.html |
61.46 KB 15.83 gz |
61.66 KB 15.85 gz |
+0.19 KB (+0.3%) +0.03 gz (+0.2%) |
🟡 Rect.html |
60.96 KB 14.77 gz |
61.26 KB 14.79 gz |
+0.30 KB (+0.5%) +0.02 gz (+0.1%) |
🟡 Line.html |
57.51 KB 14.04 gz |
57.75 KB 14.05 gz |
+0.24 KB (+0.4%) +0.01 gz (+0.1%) |
🟡 Image.svg |
56.98 KB 14.03 gz |
57.17 KB 14.04 gz |
+0.19 KB (+0.3%) +0.01 gz (+0.1%) |
🟡 Ellipse.html |
55.96 KB 13.49 gz |
56.19 KB 13.51 gz |
+0.23 KB (+0.4%) +0.01 gz (+0.1%) |
🟡 Image.html |
55.99 KB 13.70 gz |
56.18 KB 13.71 gz |
+0.19 KB (+0.3%) +0.01 gz (+0.1%) |
🟡 Ellipse.svg |
55.75 KB 13.47 gz |
55.98 KB 13.48 gz |
+0.23 KB (+0.4%) +0.01 gz (+0.1%) |
🟡 Grid |
52.29 KB 9.44 gz |
52.59 KB 9.54 gz |
+0.30 KB (+0.6%) +0.09 gz (+1.0%) |
🟡 Highlight |
45.01 KB 8.54 gz |
45.31 KB 8.63 gz |
+0.30 KB (+0.7%) +0.09 gz (+1.0%) |
🟡 Grid.canvas |
38.90 KB 6.94 gz |
39.20 KB 7.04 gz |
+0.30 KB (+0.8%) +0.10 gz (+1.4%) |
🟡 Highlight.svg |
34.95 KB 6.72 gz |
35.25 KB 6.80 gz |
+0.30 KB (+0.9%) +0.08 gz (+1.1%) |
🟡 Highlight.html |
34.13 KB 6.75 gz |
34.43 KB 6.83 gz |
+0.30 KB (+0.9%) +0.07 gz (+1.1%) |
🟡 Highlight.canvas |
32.37 KB 6.17 gz |
32.67 KB 6.25 gz |
+0.30 KB (+0.9%) +0.08 gz (+1.3%) |
🟡 Group |
15.27 KB 3.99 gz |
15.36 KB 4.01 gz |
+0.09 KB (+0.6%) +0.02 gz (+0.4%) |
🔴 Image.canvas |
12.79 KB 3.75 gz |
12.98 KB 3.76 gz |
+0.18 KB (+1.4%) +0.01 gz (+0.3%) |
🟡 Group.html |
11.55 KB 3.52 gz |
11.64 KB 3.54 gz |
+0.09 KB (+0.8%) +0.02 gz (+0.5%) |
🟡 Group.svg |
11.42 KB 3.49 gz |
11.51 KB 3.51 gz |
+0.09 KB (+0.8%) +0.02 gz (+0.5%) |
🟡 Group.canvas |
10.21 KB 3.12 gz |
10.29 KB 3.13 gz |
+0.09 KB (+0.9%) +0.01 gz (+0.5%) |
🔴 GeoProjection |
4.41 KB 1.41 gz |
4.50 KB 1.44 gz |
+0.10 KB (+2.2%) +0.03 gz (+2.1%) |
Worst case (1 changed)
| Scenario | Current | New | Change |
|---|---|---|---|
🟡 all |
1013.72 KB 238.24 gz |
1009.70 KB 237.02 gz |
-4.02 KB (-0.4%) -1.21 gz (-0.5%) |
Understanding this report
- Use-case scenarios measure the bundle cost of common chart configurations (e.g. a line chart with axes)
- Individual components measure each component imported in isolation
- Svelte runtime is excluded; sizes reflect layerchart + its dependencies (d3, etc.)
- When multiple components share dependencies (e.g. d3-scale), the real-world cost is lower than the sum of individual sizes
- Changes smaller than 10 bytes or 0.1% are considered insignificant
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
perf: Faster mounts across primitives, charts, and multi-series rendering
Four independent performance fixes, each measured before/after. Across the benchmark suite, 45 of 86 shared benchmarks improved by ≥1.15×, with no regressions. Streaming charts also stop leaking memory (issue #585).
Changes
1. Resolve stacked value domain in a single pass
resolveDomaincollected stacked[y0, y1]values by callinggetStackValue()once per row per series, rebuilding thekeyByaccessor (a lodashgetpath lookup) and re-reading the stack deriveds every time.SeriesState.getStackedValues()hoists both out of the loop and collects in one pass.Decomposed at 365 rows × 3 series (0.171 → 0.030 ms per domain pass): ~64% of the saving is repeated reactive-graph reads, ~28% the rebuilt accessor, ~9%
flatMapallocation.2. Memoize props in component state classes
Every
*Stateclass calledthis.#getProps()separately inside each$derived— 20–34 times per class per update — and most components pass a closure that allocates a fresh object with a...restspread. A single update meant ~30 object allocations per instance.Each class now reads it once:
Applied to 16 components. No extra invalidation: every derived already read every prop through that spread.
Polygon,Circle, andLabelswere skipped — they pass() => rest, which allocates nothing.3. Remove quadratic domain recalculation on mount
registerMarkbumps a$stateversion on every mark registration, andresolveDomainreads it — so mounting N marks re-ran the domain pass 2N+3 times, each walking all N series' data. Mount cost was O(series² × rows).Measured: 1 series → 5 calls, 10 → 23, 20 → 43, each rescanning everything (172k value reads at 20 series).
The per-series scan depends only on the series and their data, not on
_markInfos, so it's now memoized per axis. The repeated calls reuse it and only the cheap mark loop re-runs. Domain combination also stopped copying every value up to four times.4. Only tween Spline path data when
motionis setSpline's constructor built ad3-interpolate-pathtween unconditionally, ignoringprops.motion— whileSpline.baserendersc.dunlessisTweened. So every data change built and drove an interpolator whose result was discarded.Every sibling (
Path,Area,Polygon,Link,Trail) already gates this behindextractTweenConfig(props.motion);Splinewas the only one that didn't. All 43createMotioncall sites were audited — this was the sole outlier.No behavioral change: without
motion, the tweened value was never rendered.Results
Full
pnpm benchon both branches, same machine. Mean ms, lower is better.Primitives (100 instances)
<Rect><Rect>× 250<Rect>× 10<Text><Group><Circle>Chart mount
Large multi-series rendering
Memory (issue #585)
Streaming the docs
perf-streamingexample, heap measured after three forced GCs via CDP:Allocation profiling on
mainattributed 51 of 61 MB over 10s tod3-interpolate-path(pathCommandsFromString,pathCommandInterpolator). After the fix, nothing layerchart-specific remains — the residual is Svelte runtime reactivity andd3-shapepath building.DOM node and event-listener counts were already flat on
main, so the "detached DOM nodes" symptom in #585 appears to have been fixed previously. This addresses the JS-heap side.