Я попытался создать 10 линейных диаграмм, все из которых имели 3000 точек, 300 * 300 svg. Он разбил мой браузер, я проверил диспетчер задач, google renderer сошел с ума с использованием памяти 1.2G и загрузкой процессора на 100%.Как нарисовать графики, используя d3.js для большого набора данных?
ответ
Для таких вещей нет простого решения. Вы можете тщательно изучить свой код и сделать его максимально эффективным, но, несмотря ни на что, если ваш код должен выполнять сотни тысяч операций в одном «потоке», все будет зависеть.
Общее решение, чтобы избежать этого замораживания, состоит в том, чтобы разделить процесс рисования на более мелкие задачи, которые вы вызываете асинхронно (т. Е. Изнутри setTimeout
). Таким образом, браузер не блокируется в течение продолжительных периодов времени, пока он запускает ваш JS-код, и, возможно (я не эксперт в этом), сборщик мусора имеет возможность очистить вещи на полпути.
В результате получается не более быстрое общее время рисования, а пользователю, который «чувствует» себя быстрее, потому что браузер не замерзает. И вы можете даже добавить индикатор прогресса.
Некоторые операции рисования не могут быть разбиты на подзадачи. Например, вы не можете разделить svg.line()
, функцию d3, которая генерирует определения пути вашего графика. Тем не менее, вы можете разделить код чертежа 10 диаграмм, чтобы он рисовал по одной диаграмме за каждый тик setTimeout
. Вы также можете разделить подготовку данных с фактическим рисунком.
Я написал ответ на другой сценарий, но аналогичная проблема здесь: CSS transitions blocked by JavaScript
- 1. Как нарисовать круги по пути, используя React D3 для всплывающей подсказки для большого набора данных быстро
- 2. D3 treemap для очень большого набора данных
- 3. Гистограмма для большого набора данных
- 4. Как рисовать перекрывающиеся графики в d3.js?
- 5. D3.js выбор части данных для визуализации из большого набора данных
- 6. Как нарисовать линейную диаграмму d3.js, используя директивы angularjs
- 7. Как нарисовать линию со стрелкой, используя d3.js
- 8. Как использовать графики d3.js в Ext.js?
- 9. d3.js, используя d3.scale.sqrt()
- 10. Как нарисовать список JSON в D3.js?
- 11. Rails: Как нарисовать графики?
- 12. Подкачка большого набора данных
- 13. Переход D3.js для набора прямоугольников
- 14. Разбиение большого набора данных
- 15. Обработка большого набора данных
- 16. рандомизация большого набора данных
- 17. Как нарисовать графики потока данных в Qt?
- 18. Выбор базы данных для большого набора данных
- 19. Как изменить положение легенд, используя D3.js
- 20. 2 Графики компоновки данных D3.js на одной странице?
- 21. Графики в реальном времени с D3.js
- 22. D3.js - Графики пончиков с несколькими кольцами
- 23. Как нарисовать графики в JSP
- 24. Потребление памяти большого набора данных
- 25. d3.js отображающие набора данных в новый с разными ключами
- 26. D3.js нарисовать каждую точку за раз
- 27. Продвинутая медиана для большого набора данных - python
- 28. Хранение большого статического набора данных
- 29. Azure Cache для большого набора данных
- 30. Solr индексация большого набора данных
Я пытался разбить процесс рисования, поэтому вместо того, чтобы рисовать все графики, я добавил одну складную меню и перемещается каждый график под одним , поэтому, когда пользователь нажимает на вкладку, график наносится на график, но проблема в том, что я открываю все вкладки один за другим, снова происходит то же самое, и мой браузер падает. – CoMpLeXiTy