2 votos

¿Cómo perfilar el rendimiento de la renderización utilizando QGIS 3.10.x o superior?

Busco poder perfilar el rendimiento de renderizado de un mapa y/o de las capas individuales que lo componen utilizando QGIS.

Las métricas que más me interesan son:
Tiempo de acceso
IOPS de almacenamiento
Tiempo de almacenamiento
IOPS de red
Tiempo de red
Tiempo de renderización
Rendimiento de renderizado (características/segundo o mosaicos/píxeles/segundo)

Lo que intento determinar son las mejores prácticas para la simplificación y el almacenamiento de mis datos a fin de garantizar que se puedan ver e interactuar con ellos de la manera más adecuada.

Unas cuantas preguntas a modo de ejemplo con las que quiero obtener información sobre el uso de la creación de perfiles:
¿Sirve el FGBD más rápido que el SHP?
¿GeoPackage vs FGDB/SHP?
¿El tamaño de la página de GPKG/SQLite3 supone una diferencia?
¿Es diferente la subdivisión para encajar determinados segmentos geométricos en una sola página de la base de datos?
¿Debo indexar los atributos X/Y/Z en la tabla, o el aumento del tamaño de la base de datos mitiga la ganancia de velocidad?
¿Es más rápido tener una tabla de geometría unida a una tabla de atributos, o una tabla agregada de geometría y atributos?

He estado investigando numerosos métodos de optimización, pero es difícil encontrar métodos concretos para perfilarlos entre sí en mi máquina objetivo que ejecuta QGIS.

Actualmente tengo un Modelo de Procesamiento que hace algunos pasos de "optimización" para mí contra cualquier dato de entrada que tengo, pero ciertamente estaría abierto a ampliar su repertorio y estandarizar sobre estas mejores prácticas.

Actualmente, tengo instalado Snail, pero no muestra tanto como el Administrador de Tareas que viene con W10, así que no me ha servido de mucho para hacer perfiles.

Del mismo modo, los mensajes en el panel de Mensajes de Registro no son tan útiles como me gustaría.

0voto

Saijin_Naib Puntos 371

Como las cosas se han aclarado con el tiempo, me siento seguro de tener una respuesta para mi pregunta anterior.

1) Eventualmente, el núcleo de QGIS tendrá una API incorporada para el rastreo de eventos basada en Catapult del proyecto Chromium.

@Saijin-Naib eventualmente sí, pero el problema es que actualmente el código de renderizado del mapa tiene el acceso a la red/almacenamiento intercalado con el renderizado, por lo que no se puede separar fácilmente el tiempo para estos y el tiempo de renderizado real (pintura). Tal vez en algún momento si separamos el acceso a los datos y la pintura, esto será más fácil de resolver...

https://github.com/qgis/QGIS/pull/32570#issuecomment-573299591

2) El desarrollador de Snail ha expresado su interés en proporcionar métricas de perfil similares a las que podrían obtenerse de la API de seguimiento de eventos mencionada anteriormente.

Por otra parte, me he dado cuenta de tu problema sobre el rendimiento de la renderización en QGIS (qgis/QGIS#32957). Por cierto, mi objetivo final con Snail es precisamente añadir indicadores sobre el rendimiento de renderizado, así que siéntase libre de compartir sus pensamientos y voy a tratar de hacer todo lo posible para mejorar Snail en consecuencia :).

https://github.com/pblottiere/snail/issues/3#issuecomment-569145819

Estado actual de los perfiles a partir de 2020-01-15:
Perfil mínimo por poder, como se hace en la pregunta. Es probable que mejore con el tiempo. El calendario de mejora no está claro.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X