2013-04-02 10 views
7

Niedawno opublikowałem pytanie o obciążenie związane z QObject w typowych scenariuszach użycia, ale niestety pytanie zostało zamknięte jako duplikat innego pytania, które technicznie nie odpowiadało na pytanie.Jak ciężki jest naprawdę QObject?

Co gorsza, pospieszni "Samarytanie", którzy grzecznie rzucili się, by zamknąć moje pytanie, przerywali odpowiedź, którą właśnie kończyłem, pisząc po kilku testach. Ponieważ nie mogę już publikować moich wyników w pierwotnym pytaniu, opublikuję je tutaj, aby były dostępne dla innych osób, które mogą potrzebować tych informacji.

+5

Pośpiech, aby oznaczyć wszystko jako duplikat tutaj, doprowadza mnie do szaleństwa. To jest powód, dla którego rzadko publikuję tutaj. Można by pomyśleć, że programiści zrozumieją, że ogólna, ogólna odpowiedź * może nie dotyczyć * konkretnego pytania. Twoje pytanie/odpowiedź brzmiało * dokładnie * to, czego szukałem, ** NIE ** to, które wszyscy odpowiedzieli na twoje pytanie. Dzięki za zamieszczenie tego! –

Odpowiedz

9

Wiele osób sugerowało, że QObject jest ciężki, ale bez żadnej jasności co do wagi. Wykonałem więc pewne pomiary, niezbyt dokładne, wszystkie wartości są przybliżone.

  • niewykorzystane QObject ~ 160 bajtów
  • pojedynczego automatycznego połączenia w/o argumentach ~ 235 bajtów
  • 2 połączenia samochodowych w/o argumentach ~ 315 bajtów
  • 3 połączeń samochodowych, 1 z 3 argumentów ~ 400 bajtów połączenia
  • 2 auto, 1 kolejce z 3 argumenty ~ 432 bajtów

numery te powinny uwzględniać używam 64-bitowy build Qt.

Podsumowując, narzut QObject jest rzeczywiście dość znaczący. Nic, czego można by kichnąć lub nadużywać.

+0

Myślę, że byłoby lepiej, gdyby po prostu dodać tę odpowiedź do http://stackoverflow.com/questions/1274022/getting-the-size-of-a-qt-object i usunąć to pytanie (lub moderator flag do scalenia) . Zrobię cel, aby go tam zabrać, jeśli to zrobisz :-) – hyde

+0

A kiedy już to zrobisz, powiedz, jaka platforma (OS, wersja kompilatora, bity 32/64) są mierzone, ponieważ to z pewnością wpłynie wynik. – hyde

+0

@hyde - najważniejszą rzeczą jest to, że kompilacja jest 64-bitowa i wynika to głównie z int i wskaźników, o których wspomniałem. Nie sądzę, aby reszta miała znaczne różnice w rozmiarze. Mimo to, system operacyjny to Windows 7 64bit, a kompilatorem jest MSVC2012 – dtech