You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTK/GDK简易应用窗口及按钮更新/刷新过慢问题排查

批量更新GTK按钮卡顿问题求助

我不是GTK/GDK专家,目前在维护他人遗留的GTK C应用。该应用是一个带有按钮网格的窗口,通过TCP连接更新按钮的标签、图像等内容,但窗口及按钮的刷新速度极慢。

经测试,gtk_button_set_image单次调用耗时约1ms,50个按钮批量更新时这一操作形成了性能瓶颈。各相关调用的大致耗时如下:

Call                             Time (ms) approximate
gtk_button_set_image             1ms
gtk_button_set_label             0.5
gdk_pixbuf_scale                 0.5 
recolour_pixbuf (重写后)     0.5
gdk_pixbuf_new_subpixbuf         0.4
gtk_css_provider_load_from_data  0.3
gtk_image_new_from_pixbuf        0.15
BuildButtonCSS                   0.01

其中recolour_pixbuf()需要逐像素处理,暂无可替代方案。即便已经优化为仅更新有变更的内容,批量更新时仍卡顿明显,该问题在树莓派CM4及桌面Linux环境中均存在。我怀疑每次按钮更新后都会触发屏幕刷新阻塞,想请教是否可以先抑制窗口重绘,待所有按钮更新完成后再统一刷新。

补充说明:应用通过g_timeout_add(100, (GSourceFunc)check_refresh, _context->refresh)每100ms检查并更新按钮,单按钮CSS更新耗时约1.5ms,图像更新约3.5ms,部分场景下单按钮总耗时超过10ms。

内容的提问来源于stack exchange,提问作者John U

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:21:01