QObject 真的有多重? [复制]

Posted

技术标签:

【中文标题】QObject 真的有多重? [复制]【英文标题】:How heavy is QObject really? [duplicate] 【发布时间】:2013-04-02 11:35:34 【问题描述】:

我最近发布了一个关于 QObject 在典型使用场景中的开销的问题,但不幸的是,该问题作为另一个在技术上没有回答该问题的问题的副本而被关闭。

更糟糕的是,匆忙匆忙结束我的问题的“撒玛利亚人”打断了我在运行几个测试后刚刚完成输入的答案。由于我无法再在原始问题中发布我的发现,因此我将其发布在此处,以便其他可能需要该信息的人使用。

【问题讨论】:

这里急于将所有内容标记为重复,这让我完全发疯了。这也是我很少在这里发帖的原因。你会认为程序员会理解一个通用的、一般的答案可能不适用于特定问题。您的问题/答案正是我正在寻找的,不是每个人都说回答了您的问题的那个。感谢您发布此信息! 也感谢您的帖子!我认为关闭其他不正确的主题的人 - 就像你的情况一样,应该获得为期 1 周的禁令。也许过了一段时间,他们停止在每个人的帖子上发送关闭按钮。就像过度发帖会被禁止一样,过度关闭帖子也应该被禁止。 【参考方案1】:

很多人暗示 QObject 很重,但不清楚它到底有多重。所以我做了一些测量,不是很准确,所有数值都是近似值。

未使用的 QObject ~160 字节 单次自动连接无参数 ~235 字节 2 个不带参数的自动连接 ~315 字节 3 个自动连接,1 个带 3 个参数 ~400 字节 2 个自动连接,1 个使用 3 个参数排队约 432 字节

这些数字应该考虑到我使用的是 64 位 Qt 构建。

因此,总而言之,QObject 的开销确实相当大。没有什么可以打喷嚏或过度使用的。

【讨论】:

我认为最好将此答案添加到***.com/questions/1274022/… 并删除此问题(或标记版主以进行合并)。如果你愿意,我会在那里投票赞成:-) 当您使用它时,也许可以告诉测量的是什么平台(操作系统、编译器版本、32/64 位),因为这肯定会影响结果。 @hyde - 最相关的是构建是 64 位的,这主要是由于我提到的整数和指针。我认为其余的在大小上不会有显着差异。不过,操作系统是 Windows 7 64 位,编译器是 MSVC2012 @ddriver 请不要移动这个问题。它在这里更有帮助,因为它更容易找到。在我的商店中,每当我们进行子类化时,QObject 开销的问题就会出现很多。知道这一点很重要。 @dtech - 我不知道你是如何测试这个的。你能检查一下这些值是否仍然是最新的吗?

以上是关于QObject 真的有多重? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

QObject的多重继承

使用 qobject 基础的多重继承

如果 QObject 是从 DIRECTLY 派生的,那么使用 *virtual* 多重继承是不是安全?

为啥在多重继承的情况下QObject需要是第一个

C++ 中 QObject 多重继承和策略/特征设计的问题

Qt中图元对象的多重集成