Thanks for the hint, I didn't know about this method of profiling :). I did as you requested and it seems that it spends quite a lot of time in Qt, namely in gray_render_line and gray_render_scanline functions.
If my understanding is correct, this time is spent in Qt itself, not in the underlying graphics stack. Which would mean that either GNU Radio generates too many rendering requests or this version of Qt is buggy. What do you think?
+ 33,04% 32,32% python3 libQt5Gui.so.5 [.] gray_render_line
+ 23,39% 22,70% python3 libQt5Gui.so.5 [.] gray_render_scanline
+ 11,10% 0,00% swapper [kernel.kallsyms] [k] secondary_startup_64
+ 11,10% 0,00% swapper [kernel.kallsyms] [k] cpu_startup_entry
+ 11,08% 0,02% swapper [kernel.kallsyms] [k] do_idle
+ 10,59% 0,01% swapper [kernel.kallsyms] [k] call_cpuidle
+ 10,58% 0,00% swapper [kernel.kallsyms] [k] cpuidle_enter
+ 10,56% 0,04% swapper [kernel.kallsyms] [k] cpuidle_enter_state
+ 10,08% 0,00% swapper [kernel.kallsyms] [k] start_secondary
+ 6,50% 0,02% swapper [kernel.kallsyms] [k] acpi_idle_enter
+ 6,47% 6,20% swapper [kernel.kallsyms] [k] acpi_processor_ffh_cstate_enter
+ 6,46% 0,00% swapper [kernel.kallsyms] [k] acpi_idle_do_entry
+ 4,26% 0,00% python3 [unknown] [k] 0x0000000000000004
+ 4,15% 0,35% python3
libc-2.31.so [.] __sched_yield
+ 4,04% 0,01% swapper [kernel.kallsyms] [k] acpi_idle_enter_bm
+ 3,57% 0,00% swapper [kernel.kallsyms] [k] ret_from_intr
+ 3,57% 0,00% swapper [kernel.kallsyms] [k] do_IRQ
+ 3,56% 0,00% swapper [kernel.kallsyms] [k] handle_fasteoi_irq
+ 3,56% 0,00% swapper [kernel.kallsyms] [k] handle_irq_event
+ 3,56% 0,00% swapper [kernel.kallsyms] [k] handle_irq_event_percpu
+ 3,48% 0,00% swapper [kernel.kallsyms] [k] __handle_irq_event_percpu
+ 3,37% 0,14% python3 [kernel.kallsyms] [k] entry_SYSCALL_64_after_hwframe
+ 3,18% 0,08% python3 [kernel.kallsyms] [k] do_syscall_64
+ 2,87% 0,06% python3 [kernel.kallsyms] [k] __x64_sys_sched_yield
+ 2,65% 0,08% python3 [kernel.kallsyms] [k] do_sched_yield
+ 2,54% 0,07% python3 [kernel.kallsyms] [k] schedule
+ 2,30% 0,00% swapper [kernel.kallsyms] [k] acpi_irq
+ 2,29% 0,00% swapper [kernel.kallsyms] [k] acpi_ev_sci_xrupt_handler
+ 2,27% 0,42% python3 [kernel.kallsyms] [k] __sched_text_start
+ 2,26% 0,00% swapper [kernel.kallsyms] [k] acpi_ev_gpe_detect
+ 2,23% 0,00% swapper [kernel.kallsyms] [k] acpi_ev_detect_gpe
+ 2,01% 0,04% WebExtensions [unknown] [.] 0000000000000000
+ 1,96% 0,01% swapper [kernel.kallsyms] [k] acpi_hw_read
+ 1,94% 0,00% swapper [kernel.kallsyms] [k] acpi_hw_read_port
+ 1,93% 1,93% swapper [kernel.kallsyms] [k] acpi_os_read_port
+ 1,50% 0,43% python3 [kernel.kallsyms] [k] pick_next_task_fair
+ 1,10% 0,00% WebExtensions [unknown] [.] 0xf8894804751efe83
+ 1,10% 0,00% WebExtensions libxul.so [.] 0x00007fe0e92a31f0
+ 1,02% 0,00% swapper [kernel.kallsyms] [k] x86_64_start_kernel
+ 1,02% 0,00% swapper [kernel.kallsyms] [k] x86_64_start_reservations
+ 1,02% 0,00% swapper [kernel.kallsyms] [k] start_kernel
+ 1,02% 0,00% swapper [kernel.kallsyms] [k] arch_call_rest_init
+ 1,02% 0,00% swapper [kernel.kallsyms] [k] rest_init
+ 1,00% 1,00% python3 libQt5Gui.so.5 [.] gray_set_cell
It seems that 50% of the time is spend in libQt5Gui.so. As far as I understand the output, "swapper" is a kernel process, so it may or may not be related.
I'll try to build latest Qt separately later and link GNU Radio against it, and see what happens :>