2013-04-02 7 views
7

Recentemente ho pubblicato una domanda sul sovraccarico di QObject in scenari di utilizzo tipici, ma sfortunatamente la domanda è stata chiusa come duplicato di un'altra domanda che tecnicamente non ha risposto alla domanda.Quanto pesa davvero QObject?

Quel che è peggio, i frettolosi "samaritani" che si affrettarono a chiudere la mia domanda interruppero la risposta che stavo appena scrivendo dopo aver eseguito alcuni test. Dal momento che non riesco più a pubblicare le mie conclusioni nella mia domanda iniziale, le posterò qui in modo che siano disponibili per gli altri che potrebbero aver bisogno di tali informazioni.

+5

La fretta di contrassegnare tutto come un duplicato qui intorno mi fa completamente impazzire. È la ragione per cui pubblico raramente qui. Si potrebbe pensare che i programmatori capiscano che una risposta generale generica * potrebbe non essere applicata * a una domanda specifica. La tua domanda/risposta era * esattamente * quello che stavo cercando, ** NON ** quello che tutti hanno risposto alla tua domanda. Grazie per aver postato questo! –

risposta

9

Un sacco di persone hanno accennato al fatto che QObject è pesante, ma senza alcuna chiarezza su quanto sia pesante esattamente. Così ho fatto alcune misurazioni, non molto accurate, tutti i valori sono approssimativi.

  • inutilizzati QObject ~ 160 byte
  • singola connessione automatica w/o argomenti ~ 235 byte
  • 2 connessioni auto w/o argomenti ~ 315 byte
  • 3 collegamenti auto, 1 con 3 argomenti ~ 400 bytes connessioni
  • 2 auto, 1 in coda con 3 argomenti ~ 432 byte

Questi numeri dovrebbero tener conto che sto usando un 64 bit di compilazione Qt.

Quindi, in conclusione, il sovraccarico di QObject è piuttosto significativo. Niente starnutire o esagerare.

+0

Penso che sarebbe meglio se aggiungessi questa risposta a http://stackoverflow.com/questions/1274022/getting-the-size-of-a-qt-object ed elimini questa domanda (o flag moderator per la fusione) . Prenderò un punto di andare a svenderlo lì se lo fai :-) – hyde

+0

E mentre ci sei, forse dire quali piattaforme (OS, versione del compilatore, 32/64 bit) sono quelle misurate, in quanto ciò influenzerà sicuramente il risultato. – hyde

+0

@hyde - la cosa più rilevante è che la build è a 64 bit ed è principalmente dovuta a inte e puntatori, che ho citato. Non penso che il resto avrà differenze significative nelle dimensioni. Tuttavia, il sistema operativo è Windows 7 a 64 bit e il compilatore è MSVC2012 – dtech