![Page 1: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/1.jpg)
QGIS Performance Improvements
Scottish QGIS User GroupMarch 19th 2014
Martin DobiasLutra Consulting
![Page 2: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/2.jpg)
Who are we?
● A group of consulting engineers specialising in:
● GIS (Open Source GIS)
● Software Development
● Numerical Modelling (in the water engineering sector)
Introduction to Python
![Page 3: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/3.jpg)
About me
● With Lutra Consulting since autumn 2013
● Background in computer science
● Self-taught in GIS
● QGIS developer since 2005
● Python support
● Advanced symbology and labeling support
● Expressions
● Under the hood improvements (libraries, vectors, canvas, ...)
QGIS Performance Improvements
![Page 4: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/4.jpg)
Performance Problems in QGIS
● DEMO
● Slow rendering
● Every map refresh can take several seconds with complex projects
● Rendering freezes user interface
● User has to wait with any actions until the rendering has finished
QGIS Performance Improvements
![Page 5: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/5.jpg)
Rendering in QGIS (1)
QGIS Performance Improvements
![Page 6: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/6.jpg)
Rendering in QGIS (2)
QGIS Performance Improvements
![Page 7: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/7.jpg)
Parallelization
● Algorithms vary significantly in how parallelizable they are
● Embarrassingly parallel problems
● e.g. rendering of 3D scenes, serving static files from web server
● Inherently serial problems
● e.g. iterative numerical methods
QGIS Performance Improvements
![Page 8: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/8.jpg)
Parallel Rendering in QGIS (1)
● Each layer rendered to a separate image, then composed together
● N-times faster!
● Framework to handle scheduling (QtConcurrent)
● Use all available CPU cores
● Automatic load balancing
QGIS Performance Improvements
![Page 9: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/9.jpg)
Parallel Rendering in QGIS (2)
● Real world
● Speed improvement depends on data
● One complex layer may dominate total time → smaller speed improvement
● Lower waiting time with remote services → higher speed improvement
QGIS Performance Improvements
![Page 10: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/10.jpg)
User Interface Freeze
● Application waits for events and handles them
● When busy, events need to wait to be processed
● Move the rendering to the background!
QGIS Performance Improvements
![Page 11: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/11.jpg)
Rendering in Background
● Users may do some changes that affect rendering while rendering is still in progress
● e.g. change layer style, delete a layer
● Possible solutions:
● Do nothing
● Do not allow such actions
● Make sure all such actions are safe
QGIS Performance Improvements
![Page 12: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/12.jpg)
Rendering in Background - Problems
● Data used for rendering must be protected from simultaneous access
● Complex task, needs to be addressed rigidly
● Locking
● Waiting
● If not done properly: dead-locks, crashes
● Copying
● May add overhead
● QGIS uses both locking and copying when appropriate
QGIS Performance Improvements
![Page 13: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/13.jpg)
DEMO
QGIS Performance Improvements
![Page 14: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/14.jpg)
Project History
● Summer 2010: Started as a Google Summer of Code (GSoC) project
● Spring 2013: Updates to QGIS infrastructure before the 2.0 release (API changes)
● Winter 2013: Implementation of the parallel/background rendering
● Spring 2014: Merged into QGIS master branch, will be in 2.4 release
QGIS Performance Improvements
![Page 15: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/15.jpg)
Looking into the Future...
● Cancellation of raster data requests (needs also work in GDAL)
● Vector caching
● Faster labeling and vector reprojection
● Rendering with OpenGL
QGIS Performance Improvements
![Page 16: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/16.jpg)
Summary
● QGIS 2.4 will be
● More interactive when browsing maps
● Able to use all available CPUs for rendering
● Q & A
QGIS Performance Improvements
![Page 17: QGIS UK User Group - QGIS Performance Enhancements (Lutra)](https://reader030.vdocument.in/reader030/viewer/2022020306/555e0843d8b42a9e188b485e/html5/thumbnails/17.jpg)
Tips for Better Performance
● Vector layers: use spatial index
● Raster layers: use overviews
● Rendering configuration
● Turn on render caching
● Turn off anti-aliasing
● Vector styling
● Thin lines
● Polygons without border
● Without data-defined properties
● Data store specific features
● PostGIS – disable SSL mode on local network
QGIS Performance Improvements