2013-04-02 3 views
7

Ich habe vor kurzem eine Frage über den Overhead von QObject in typischen Anwendungsszenarien gestellt, aber leider wurde die Frage als Duplikat einer anderen Frage geschlossen, die die Frage technisch nicht beantwortet hat.Wie schwer ist QObject wirklich?

Was noch schlimmer ist, die eiligen "Samariter", die höflich eilten, um meine Frage zu beenden, unterbrachen die Antwort, die ich gerade beendete, nachdem ich ein paar Tests durchgeführt hatte. Da ich meine Ergebnisse in meiner ursprünglichen Frage nicht mehr veröffentlichen kann, werde ich sie hier veröffentlichen, damit sie für andere verfügbar ist, die diese Informationen benötigen.

+5

Das Rauschen, um alles als ein Duplikat hier zu markieren, macht mich völlig verrückt. Das ist der Grund, warum ich hier selten mehr poste. Sie würden denken, dass Programmierer verstehen würden, dass eine generische, allgemeine Antwort * auf eine bestimmte Frage nicht zutrifft. Deine Frage/Antwort war * genau * was ich gesucht habe, ** NICHT ** das, was alle gesagt haben, deine Frage beantwortet. Danke für das Posten! –

Antwort

9

Viele Leute haben angedeutet, dass QObject schwer ist, aber ohne Klarheit darüber, wie schwer es genau ist. Also habe ich einige Messungen gemacht, nicht sehr genau, alle Werte sind ungefähre Werte.

  • ungenutzter QObject ~ 160 Bytes
  • einzige Auto Verbindung w/o Argumente ~ 235 Bytes
  • 2 auto Verbindungen w/o Argumente ~ 315 Bytes
  • 3 Auto-Verbindungen, 1 mit 3 Argumenten ~ 400 Bytes
  • 2 Auto Verbindungen, in der Warteschlange 1 mit 3 Argumenten ~ 432 Bytes

Diese Zahlen sollen ich berücksichtigen bin mit einem 64-Bit-Qt-Build.

Also, abschließend ist der Overhead von QObject in der Tat ziemlich signifikant. Nichts zu niesen oder zu übernutzen.

+0

Ich denke, es wäre besser, wenn Sie nur diese Antwort http://stackoverflow.com/questions/1274022/getting-the-size-of-a-qt-object hinzufügen und diese Frage löschen (oder Flag-Moderator für die Zusammenführung) . Ich werde darauf hinarbeiten, es zu verbessern, wenn Sie tun :-) – hyde

+0

Und während Sie dabei sind, vielleicht sagen, welche Plattform (OS, Compiler-Version, 32/64 Bit) diese gemessen werden, wie das sicherlich beeinflussen wird das Ergebnis. – hyde

+0

@hyde - die wichtigste Sache ist, dass der Build 64 Bit ist und es ist vor allem auf Ints und Zeiger zurückzuführen, die ich erwähnt habe. Ich glaube nicht, dass der Rest signifikante Unterschiede in der Größe haben wird. Dennoch ist das Betriebssystem Windows 7 64bit und der Compiler ist MSVC2012 – dtech