I am looking to be able to profile the rendering performance of a map and/or its individual component layers using QGIS.

The metrics I am most interested in are:
Access time
Storage IOPS
Storage time
Network IOPS
Network time
Rendering time
Rendering perf (features/sec or tiles/pixels/sec)

What I am attempting to determine are best-practices for simplification and storage of my data to ensure that it can be viewed and interacted with in the most responsive manner.

A few for-instance questions I'm looking to gain insight on using profiling:
Does FGBD serve faster than SHP?
GeoPackage vs FGDB/SHP?
Does GPKG/SQLite3 page size make a difference?
Does subdivision to fit given geometry segments in a single database page make a difference?
Should I index X/Y/Z attributes in the table, or does the increased database size mitigate the speed gain?
Is it faster to have a geometry table joined to an attribute table, or one aggregated table of geom & attributes both?

I've been researching numerous methods of optimization, but it is hard to find concrete methods of profiling these against one another on my target machine running QGIS.

I currently have a Processing Model that does a few "optimization" steps for me against any input data I have, but I would certainly be open to expanding its repertoire and standardizing upon these best practices.

Currently, I have Snail installed, but it doesn't show nearly as much as the Task Manager that ships with W10 does, so it hasn't been of much use to me for profiling.

Similarly, messages in the Log Messages panel aren't as helpful as I would like.


As things have cleared up with time, I feel confident that I have an answer for my question above.

1) Eventually, QGIS' core will have a built-in API for event tracing based upon Catapult by the Chromium project.

@Saijin-Naib eventually yes, but the problem is that currently the map rendering code has network/storage access interleaved with rendering, so you can't easily separate time for those and the actual rendering (painting) time. Maybe at some point if we separate data access and painting, this will be easier to figure out...


2) Snail's developer expressed interest in providing profiling metrics similar to what could be gleaned from the event tracing API above.

Otherwise, I noticed your issue about rendering performances in QGIS (qgis/QGIS#32957). FWIW, my ultimate goal with Snail is precisely to add indicators about rendering performances, so feel free to share your thoughts and I'll try to do my best to improve Snail accordingly :).


Current state of profiling as of 2020-01-15:
Minimal profiling by proxy, as done in the question. Likely to improve with time. Timetable for improvement unclear.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.