Glade 使用大型 GtkGrid 的速度非常慢

Glade is extremely slow with large GtkGrid

提问人:Dave Buchan 提问时间:11/17/2023 最后编辑:Dave Buchan 更新时间:11/21/2023 访问量:64

问:

我正在为一个使用Glade的项目开发用户界面,在其中我创建了一个尺寸为22行乘36列的GtkGrid。虽然没有向网格添加子小部件,但 Glade 的行为很正常,因为当我退出 Glade 时它会迅速关闭。但是当我添加标签和/或按钮时,关闭 Glade 的速度越来越慢。如果我用子小部件填充所有占位符位置,实际上需要几个小时才能关闭 Glade(但它确实关闭了)。

当我编辑文件时,Glade 仍然完全响应。

Glade 保存文件的速度似乎也不受影响,因为我可以看到使用 vi 可以立即更新文件。

运行我的项目应用程序时,它的行为几乎正常,除了在我退出应用程序后命令行响应能力略有延迟。因此,该应用程序完全可用。我有一台速度非常快的电脑,但速度较慢的电脑可能会有问题。我没试过。

我创建了一个简单的示例 Glade 文件来演示该问题:

https://pdbuchan.com/tmp/example.ui

上面的示例导致 Glade 需要大约 10 秒才能为我关闭。如果添加更多子小部件,速度会减慢。

在格莱德中似乎有一些进程按照 n^2 顺序运行。即 O(n^2)

我的问题是:这是对GtkGrid的不恰当使用吗?有没有更合适的方法来实现大量按钮?这是否说明了 Glade 处理大型网格的方式效率低下?

我在 Ubuntu Linux 22.04.3 LTS 上使用 GTK+3 和 Glade 3.38.2,Glade 针对 GTK 3.24 webkit2gtk 2.28,配备 Intel i9-12900K 和 64 GB 内存。

GTK 格莱德

评论


答:

0赞 floppy_molly 11/21/2023 #1

我看了一下,但不知道从哪里开始 a) 任何调用都没有 Python 或 C 链接(我个人使用的是带有 python 的 GLADE) b) 很多占位符 任何打开/关闭都不会打扰我(减少空占位符? ) 只要它在 python 或 C 应用程序中非常快速地关闭/打开。是这样吗?

评论

0赞 Dave Buchan 11/21/2023
我的问题实际上是关于为什么 Glade 关闭这个 example.ui 文件的速度如此之慢,所以这就是为什么我没有提供任何应用程序的 C 代码。如果我在 Glade 中打开它并删除我放置它的几个按钮和标签,Glade 会关闭得更快,如果我添加更多小部件,它会关闭得更慢。不管我是添加按钮还是标签,Glade 对我来说关闭的速度会变慢。我的实际应用程序是响应式的,但是一旦我关闭应用程序(大约 1 秒),命令行响应就会延迟。example.ui 文件会立即为您关闭吗?如果添加多个标签会怎样?