Производительность Mapbox — отдельные слои против setData против фильтров

Есть ли какое-либо руководство по работе с довольно большими (5 МБ) наборами данных GeoJSON в mapbox?

У меня есть 3-4, которые мне нужно показать и переключаться между ними на одной карте. Лучше ли мне объединить источники данных и использовать filter на слое, чтобы выбрать нужные данные? или было бы лучше создать 3-4 слоя и показывать/скрывать по необходимости? или было бы лучше иметь один слой и передавать данные через setData на слое?


person dougajmcdonald    schedule 15.02.2017    source источник


Ответы (1)


Ответ на этот вопрос зависит от того, что является узким местом вашей производительности:

  • Если вашим узким местом является передача данных в/из рабочих потоков, использование setFilter устранит необходимость передачи данных в рабочие потоки.
  • Если вашим узким местом является фильтрация данных в рабочих потоках и вы можете более эффективно предварительно обрабатывать эти данные, использование setData избавит вас от необходимости фильтровать данные в рабочих потоках.
  • Если у вас много доступной памяти и вам нужно быстро показать/скрыть слои, лучше всего создать 3-4 отдельных слоя и показывать/скрывать в зависимости от необходимости.

Ваше узкое место будет зависеть от ваших данных, ваших моделей использования и вашего устройства. Как всегда, я рекомендую делать то, что проще всего, и профилировать, если производительность недостаточно хороша!

person Lucas Wojciechowski    schedule 16.02.2017
comment
Спасибо за информацию Лукас. Извините за наивность, но я не уверен, что вы подразумеваете под передачей данных в рабочие потоки и из них, поскольку я не осознавал, что использую рабочие потоки. Можно немного уточнить? Мое впечатление о узких местах производительности заключается в том, что это рендеринг на стороне клиента, но я не на 100% приветствую любые советы по измерению и выявлению узких мест, в частности, в mapbox. - person dougajmcdonald; 16.02.2017
comment
У меня тот же вопрос, и мне бы хотелось получить больше разъяснений от @lucas-wojciechowski о том, как измерить, является ли узким местом передача данных в рабочие потоки и из них или фильтрация внутри рабочих потоков. @dougajmcdonald насколько я понимаю, mapbox-gl-js использует внутренние рабочие потоки. - person Gregor; 27.02.2017