Улучшение производительности d3?

У меня есть некоторые проблемы с производительностью d3.js для отображения точек на карте.

Я использую этот прекрасный кусок кода, который я нашел здесь в качестве отправной точки для моего кода https://gist.github.com/bobuss/1985684

По сути, код ссылки делает рисование точек на картах и ​​кривых для соединения линий. Однако, когда я попытался добавить больше точек данных (около 300), это каким-то образом либо привело к сбою в работе моего браузера, либо к задержке ALOT.

Так что мне было интересно, есть ли способ улучшить производительность в этом случае?

Спасибо!

1 ответ

Решение

Я рассмотрел использование d3, чтобы показать некоторые геномные данные (23k точек на диаграмме рассеяния).

Это просто не могло работать, большая часть браузера зависала, когда вы добавляете 23k dom узлов, и если вы пытаетесь иметь некоторую интерактивность (зависание, щелчок), у вас получается слишком много слушателей событий, и все умирает.

Мне нравится d3, я использую его с первых дней существования Provisis, но, по моему опыту, он стал непригодным после нескольких тысяч элементов, и каждый раз, когда мне приходилось создавать такие диаграммы, я заканчивал тем, что строил их с нуля и реализовывал на холсте. И тут вы сталкиваетесь с совершенно новым набором проблем - осуществлением собственных тестов попаданий, событий, имитацией зависания...

Это кошмар.

В JS нет хорошего решения для построения диаграмм "больших данных", по крайней мере, насколько мне известно.

И, честно говоря, обидно, что мой MacBookPro вращает свой вентилятор на максимальной скорости, а браузеры не отвечают - потому что я пытаюсь построить 25 тыс. Точек - на i7 8 ГБ оперативной памяти, это чепуха.

Но это то, что мы получаем, когда пытаемся использовать браузер для чего-то, чего не должно быть. И да, 2D ускорение GPU помогло, но не так сильно.

Другие вопросы по тегам