We encountered a problem with the performance of QTableView.
Use case:
- The user wants to be able to open up to 10-30 windows with tabular data (we receive data via the Internet)
- Each table can have from 0 to 13 thousand rows and about 100 columns with its own filtering and sorting parameters
- The data in the table can be updated very often (each of the row can have 100-1000 updates per second)
What we have already done:
- All data received and processed (sorting/filtering) in separated threads.
- QTableView has limitation of updates with 60 fps. This is implemented inside the model through the dataChanged signal exclusively for the viewport and only for cells what was changed.
Problem: Even after all optimizations in the profiler (Intel VTune) we see the following picture with 20 opened windows: As you can see from the graph, more than 70% of the time of the main thread is occupied by rendering the QTableView (QWidgetPrivate). At the same time, the application responsiveness to user actions significantly decreased. The test was carried out on the pretty powerful hardware - Intel core i7-12700KF with ssd and 64 Gb RAM. Does anyone know how to speed up the rendering of QTableView? Maybe the only way is a custom view implementation with painting overriding?