● WebGL2 · замерено на твоей видеокарте

Графики, которые
рвут TradingView

Свой движок на WebGL2. 11 KB против 60 KB у lightweight-charts, загрузка в 40× быстрее, рендер на GPU вместо Canvas2D. Не на словах — прогони бенчмарк ниже.

zerox-lite · WebGL2 · 11 KB
11 KB
вес gzip · в 5.4× легче lightweight-charts
40×
быстрее загрузка 50k свечей
120 fps
пан/зум на 1 000 000 свечей

01 Живой бенчмарк

Прогони сам — на своей видеокарте

Как Speedtest: сначала гоняем график lightweight-charts, потом наш. Один и тот же стресс — пан большого окна свечей каждый кадр. FPS считается в реальном времени по кадрам твоего браузера.

Нажми «Запустить» →
определяю железо…
FPS
lightweight-charts
Canvas2D · CPU
zerox-lite
WebGL2 · GPU

Стресс: 80 000 свечей в памяти, видимое окно ~4 000 свечей, непрерывный пан. lightweight-charts перерисовывает все видимые свечи на CPU каждый кадр; zerox-lite — один инстансированный вызов на GPU. FPS = по интервалам кадров (rAF), потолок = частота твоего дисплея.

02 Вес

В 5.4× легче. Ноль зависимостей.

Что реально качает клиент, gzip. Меньше — лучше.

zerox-liteWebGL2 · наш
11 KB
lightweight-charts 4Canvas2D · TV
49 KB
lightweight-charts 5Canvas2D · TV
60 KB
zerox-chart fullWebGL2 · полный терминал
124 KB
TV Charting LibraryCanvas2D · лицензия
≈3 MB+

03 Скорость · Apple M5, ANGLE Metal

Не «немного быстрее». В разы.

Замеры на одной машине, синхронные, не оценки. База — 50 000 свечей.

загрузка данных
setData 50k свечей
наш 1.2 мс · их 48.6 мс
аппенд нового бара
добавление свечей в реальном времени
наш 278k/с · их 3 820/с
тик в свечу
горячий путь — обновление цены
наш 2.5M/с · их 3 820/с

04 Почему быстрее

GPU против CPU. Вот и всё.

lightweight-charts Canvas2D

Каждый кадр процессор обходит все видимые свечи и рисует их по одной на 2D-канвасе. Больше свечей — больше работы CPU — ниже FPS.

кадр = O(видимые свечи) на CPU

zerox-chart WebGL2

OHLC заливается в GPU один раз. Пан/зум — это смена одной uniform-переменной, рисование — один инстансированный вызов. Миллион свечей или сотня — стоимость кадра одна.

кадр = 1 вызов на GPU, пан = смена uniform

05 Функционал

Всё, что есть у них — плюс GPU

lite повторяет весь набор lightweight-charts и добавляет то, что Canvas2D не вытягивает.

параметрzerox-litelightweight-chartszerox-chart fullTV Charting Library
РендерWebGL2 GPUCanvas2DWebGL2 GPUCanvas2D
Вес (gzip)11 KB49–60 KB124 KB≈3 MB+
Типы серий5 candle·line·area·baseline·hist65+все
Толстые AA-линии
Панели · неск. шкал● panes+L/R● (v5)
Маркеры · price-lines · watermark● ● ●● ● ●● ● ●● ● ●
Встроенные индикаторыopt-in~50100+
Инструменты рисования
Real-time● O(1)● деградирует● O(1)
1M свечей плавно● 120 fps● 120 fps
Лицензиясвоё / открытоApache-2.0своёпроприетарная

Полная таблица со всеми параметрами и оговорками → /table.html

06 Два продукта — один движок

Каждый бьёт свой класс

zerox-lite

против lightweight-charts
  • 11 KB вес gzip, в 5.4× легче
  • 40× загрузка 50k свечей
  • 73× аппенд баров
  • WebGL2 GPU-рендер против Canvas2D

zerox-chart full

против TV Charting Library
  • 124 KB против нескольких MB
  • ~50 индикаторов + рисование
  • 120 fps на 1M свечей
  • $0 своё, без лицензии