RSLive renderer benchmark

DataChart: Chart.js против ECharts

Один ChartModel, одинаковые datasets и два renderer. Это технический стенд: данные ниже искусственные и нужны только для сравнения поведения библиотек.

Для чистого Network/Performance сравнения используйте изолированные страницы: Chart.js · ECharts · contract checks.

Контрольная страница без DataChart →
Показывать
Тема
Bundled runtime: Chart.js 4.5.1 / canvas · ECharts 6.1.0 / SVG.
Оба движка устанавливаются через npm и собираются Vite в отдельные lazy chunks; внешнего CDN нет.

Что проверять

  1. Сравнить подписи, легенды, null, tooltip и плотность одного dataset в двух движках.
  2. Переключать светлую/тёмную тему: готовые графики должны уничтожаться и создаваться заново без дублей.
  3. На ширине около 360 px не должно быть горизонтального вылета карточки.
  4. Раскрыть «Данные графика»: HTML-таблица должна оставаться доступной независимо от renderer.
  5. На изолированных страницах проверить отдельные bundled chunks; контрольная страница не должна запрашивать ни Chart.js, ни ECharts, ни jsDelivr.
  6. Прокрутить страницу: первый ряд загружается eager, остальные — только рядом с viewport.

Вариант 1

Line · human table + null

Три серии, одна пропущенная точка, подписи категорий и ручной табличный синтаксис.

Chart.js · canvas

Line · human table + null

Те же нормализованные данные, renderer Chart.js.

Загрузка Chart.js…

Данные графика
Месяц БелградНови-СадНиш
Янв 1019472
Фев 1049674
Мар 1089978
Апр 11110380
Май 11510783
Июн 118110
Июл 12211488
Авг 12011691

Искусственный fixture

ECharts · SVG

Line · human table + null

Те же нормализованные данные, renderer ECharts.

Загрузка ECharts…

Данные графика
Месяц БелградНови-СадНиш
Янв 1019472
Фев 1049674
Мар 1089978
Апр 11110380
Май 11510783
Июн 118110
Июл 12211488
Авг 12011691

Искусственный fixture

Вариант 2

Bar · 3 серии

Дискретные категории и три сравниваемых ряда.

Chart.js · canvas

Bar · 3 серии

Те же нормализованные данные, renderer Chart.js.

Загрузка Chart.js…

Данные графика
category firstsecondthird
A 342116
B 282519
C 413123
D 372928
E 463531
F 433933

Искусственный fixture

ECharts · SVG

Bar · 3 серии

Те же нормализованные данные, renderer ECharts.

Загрузка ECharts…

Данные графика
category firstsecondthird
A 342116
B 282519
C 413123
D 372928
E 463531
F 433933

Искусственный fixture

Вариант 3

Area · 18 периодов

Две серии на общей шкале; проверка заполнения области и длинного ряда.

Chart.js · canvas

Area · 18 периодов

Те же нормализованные данные, renderer Chart.js.

Загрузка Chart.js…

Данные графика
period valuebaseline
T1 4235
T2 4736
T3 5137
T4 5438
T5 5640
T6 5541
T7 5442
T8 5243
T9 5144
T10 5145
T11 5347
T12 5748
T13 6249
T14 6750
T15 7251
T16 7652
T17 7853
T18 7855

Искусственный fixture

ECharts · SVG

Area · 18 периодов

Те же нормализованные данные, renderer ECharts.

Загрузка ECharts…

Данные графика
period valuebaseline
T1 4235
T2 4736
T3 5137
T4 5438
T5 5640
T6 5541
T7 5442
T8 5243
T9 5144
T10 5145
T11 5347
T12 5748
T13 6249
T14 6750
T15 7251
T16 7652
T17 7853
T18 7855

Искусственный fixture

Вариант 4

Scatter · 120 точек

Числовая ось X и достаточно точек, чтобы сравнить SVG и canvas.

Chart.js · canvas

Scatter · 120 точек

Те же нормализованные данные, renderer Chart.js.

Загрузка Chart.js…

Данные графика
x value
1 28
2 34
3 38,7
4 41,2
5 41
6 38,2
7 33,6
8 28,3
9 23,6
10 20,7
11 20,2
12 22,5
13 27
14 32,9
15 39
16 43,8
17 46,5
18 46,6
19 44
20 39,6
21 34,3
22 29,5
23 26,4
24 25,7
25 27,7
26 32,1
27 37,9
28 43,9
29 49
30 51,9
31 52,2
32 49,9
33 45,5
34 40,3
35 35,4
36 32
37 31,1
38 32,9
39 37,1
40 42,8
41 48,9
42 54,1
43 57,2
44 57,8
45 55,7
46 51,5
47 46,3
48 41,3
49 37,8
50 36,6
51 38,1
52 42,1
53 47,8
54 53,9
55 59,2
56 62,6
57 63,3
58 61,4
59 57,4
60 52,2
61 47,2
62 43,5
63 42,1
64 43,4
65 47,2
66 52,7
67 58,9
68 64,3
69 67,8
70 68,9
71 67,2
72 63,3
73 58,2
74 53,1
75 49,2
76 47,6
77 48,7
78 52,3
79 57,7
80 63,8
81 69,3
82 73,1
83 74,4
84 73
85 69,2
86 64,2
87 59
88 55
89 53,1
90 53,9
91 57,3
92 62,6
93 68,8
94 74,4
95 78,4
96 79,9
97 78,7
98 75,2
99 70,2
100 65
101 60,8
102 58,7
103 59,3
104 62,4
105 67,6
106 73,7
107 79,4
108 83,6
109 85,4
110 84,4
111 81
112 76,1
113 70,9
114 66,6
115 64,3
116 64,6
117 67,6
118 72,6
119 78,7
120 84,5

Искусственный fixture

ECharts · SVG

Scatter · 120 точек

Те же нормализованные данные, renderer ECharts.

Загрузка ECharts…

Данные графика
x value
1 28
2 34
3 38,7
4 41,2
5 41
6 38,2
7 33,6
8 28,3
9 23,6
10 20,7
11 20,2
12 22,5
13 27
14 32,9
15 39
16 43,8
17 46,5
18 46,6
19 44
20 39,6
21 34,3
22 29,5
23 26,4
24 25,7
25 27,7
26 32,1
27 37,9
28 43,9
29 49
30 51,9
31 52,2
32 49,9
33 45,5
34 40,3
35 35,4
36 32
37 31,1
38 32,9
39 37,1
40 42,8
41 48,9
42 54,1
43 57,2
44 57,8
45 55,7
46 51,5
47 46,3
48 41,3
49 37,8
50 36,6
51 38,1
52 42,1
53 47,8
54 53,9
55 59,2
56 62,6
57 63,3
58 61,4
59 57,4
60 52,2
61 47,2
62 43,5
63 42,1
64 43,4
65 47,2
66 52,7
67 58,9
68 64,3
69 67,8
70 68,9
71 67,2
72 63,3
73 58,2
74 53,1
75 49,2
76 47,6
77 48,7
78 52,3
79 57,7
80 63,8
81 69,3
82 73,1
83 74,4
84 73
85 69,2
86 64,2
87 59
88 55
89 53,1
90 53,9
91 57,3
92 62,6
93 68,8
94 74,4
95 78,4
96 79,9
97 78,7
98 75,2
99 70,2
100 65
101 60,8
102 58,7
103 59,3
104 62,4
105 67,6
106 73,7
107 79,4
108 83,6
109 85,4
110 84,4
111 81
112 76,1
113 70,9
114 66,6
115 64,3
116 64,6
117 67,6
118 72,6
119 78,7
120 84,5

Искусственный fixture

Вариант 5

Doughnut · строковые numeric-looking категории

Проверяет явные строки «2024», «001» и «null» в human grammar.

Chart.js · canvas

Doughnut · строковые numeric-looking категории

Те же нормализованные данные, renderer Chart.js.

Загрузка Chart.js…

Данные графика
Год Доля
2024 18%
2025 27%
2026 31%
001 14%
null 10%

Искусственный fixture

ECharts · SVG

Doughnut · строковые numeric-looking категории

Те же нормализованные данные, renderer ECharts.

Загрузка ECharts…

Данные графика
Год Доля
2024 18%
2025 27%
2026 31%
001 14%
null 10%

Искусственный fixture

Контроль progressive enhancement

Без engine production-компонент использует Chart.js. Ниже engine="none" явно отключает renderer и оставляет только server-rendered fallback.

Fallback only

Эта карточка не должна инициировать загрузку renderer chunk.

Данные графика
category firstsecondthird
A 342116
B 282519
C 413123
D 372928
E 463531
F 433933

Искусственный fixture