Qt 3D performance

In the recent Qt releases, especially Qt 5.11 and Qt 5.12, there was a constant stream of performance improvements for Qt 3D, be it in CPU memory usage or improved SIMD support. Thus, this module seems to be under very active development.

One interesting feature is that, internally, Qt 3D uses the task-based approach to parallelism we have already spoken about in Chapter 5, An In-Depth Guide to Concurrency and Multithreading; that is, it dispatches tasks to the worker threads, each running on a single core. This approach will naturally scale when more cores are available in the system. This also makes it possible to automatically generate multiple render commands and render views in parallel.

This looks very promising, and it will be interesting to watch the evolution of Qt 3D in future Qt versions!

The commercially available Qt 3D Studio 2.0 sports the Debugging and Profiling UIs, which display basic information about rendering performance and structure of the 3D scene. It is implemented in a game-like manner as an immediate overlay GUI (they even used the well-known Dear ImGUI to implement it!). Unfortunately, there isn't such a tool in the open source version.

This leaves us with general-purpose tools, such as apitrace, profilers, ETW, and GPU View. Let's hope that in future releases, the Profiling UI will also be available in the open source version.