Filter by geometries by bbox
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Refactorización
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp, javascript
- Área
- performance
Línea de trabajo
Comienza con bench/vtquery.bench.js y ejecuta el benchmark documentado node bench/vtquery.bench.js --iterations 5000 --concurrency 1 para query: all things - dense nine tiles. Perfila el recorrido a través de mapbox::vector_tile::extract_geometry, incluida la asignación y liberación de geometría, y compáralo con las llamadas a closest_point y vtzero. Se considera terminado cuando se reduzca la latencia de las consultas de radio grande que abarcan varios tiles sin cambiar el comportamiento de las consultas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I ran the slowest/most intense benchmark (query: all things - dense nine tiles) on OS X using node bench/vtquery.bench.js --iterations 5000 --concurrency 1 and a patch to disable all other tests besides query: all things - dense nine tiles. Then I profiled in Activity Monitor during the run.
What I see is:
- The majority of time is taken (nearly 40%) in the thread is in
mapbox::vector_tile::extract_geometrydue to calls tonewanddelete(memory allocation and deallocation) - Then another 10% is spent in deallocating the geometry objects created by
mapbox::vector_tile::extract_geometrywhich show in profiling as adeletecall insidemapbox::util::detail::variant_helper<mapbox::geometry::polygon ...(which I think is themapbox::geometry_baseat https://github.com/mapbox/geometry.hpp/blob/96d350510c0e6738a903be40e8138c7305f3e33f/include/mapbox/geometry/geometry.hpp#L23) - Then another 10% is spent in running
mapbox::geometry::algorithms::detail::closest_point - The remainder is tiny %s of various things include vtzero (like
vtzero::layer::next_feature())
My interpretation is that:
- Parsing with vtzero is extremely cheap
- Running closest_point is also pretty cheap
- Decoding into
mapbox::geometryobjects is expensive due to memory allocation and deallocation
And therefore our overwhelming bottleneck (where > 50% of the time is taken) is mapbox::vector_tile::extract_geometry (https://github.com/mapbox/vector-tile/blob/97d8b89fe635f117ce7de25790028a65d9ce5172/include/mapbox/vector_tile.hpp#L15)
So, to reduce the latency of scenarios like this (large radius and multiple tiles) we'll need to speed up mapbox::vector_tile::extract_geometry.
Profiling output: https://callgraph.herokuapp.com/76849341d35452543e35c504964dcb94#thread-6
/cc @mapsam @flippmoke
- Lenguaje dominante
- JavaScript
- Estrellas
- 45
- Forks
- 14
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mapbox/vtquery
-
Remove mason-js dependencyAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
More efficient response formatAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 35/100
-
union geometriesAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de mapbox/vtquery
Issues similares
-
新讀者走讀回報,照著一篇文章實際操作Abiertodocumentation good first issue help wanted
Dificultad 1/5 1-3 horas Aptitud para principiantes 92/100
Los mantenedores suelen responder en 1 día
-
automated issue report
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
lirantal/discoprint#29 ·
Los mantenedores suelen responder en 1 día
-
RSS feed autodiscoveryAbiertofeature-request
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
louislam/uptime-kuma#7914 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Code Cleanup dependencies
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
ProjectSidewalk/SidewalkWebpage#5609 ·
Los mantenedores suelen responder en 1 día
-
help wanted javascript
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
OWASP/cornucopia#3538 ·
Los mantenedores suelen responder en 1 día