Review Request 123390: Reorder member variables to reduce memory usage.

Volker Krause vkrause at kde.org
Sat Apr 18 14:22:20 UTC 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/123390/
-----------------------------------------------------------

(Updated April 18, 2015, 2:22 p.m.)


Status
------

This change has been marked as submitted.


Review request for KDE Frameworks and Christoph Feck.


Changes
-------

Submitted with commit 70e730bf57a5a47e635f8ed118ce04470649bb94 by Volker Krause to branch master.


Repository: kwidgetsaddons


Description
-------

Saves 8 byte in all cases, on 64bit systems.


Diffs
-----

  src/kcapacitybar.cpp 5009208d0057933553245b1f007c9779b916bdf6 
  src/kcolumnresizer.cpp 6316bff145c337d9f16ac33f1b8dadb168b67ab0 
  src/kdatetable.cpp 495d64b91faf21b26dcee51131b8cf2c270b213f 
  src/kfontchooser.cpp 16eecc42f20a733902bab00532610c1caee9ac3b 
  src/kpassworddialog.cpp 2d05df2d1feb3f87751db104d6d64dc736c58e1a 
  src/kratingpainter.cpp 624c3cb0a66b37e6ac250eaaffeae9604cfa6cc0 

Diff: https://git.reviewboard.kde.org/r/123390/diff/


Testing
-------

Used bytes: 37/48 (77.08%)
Used bits: 290/384 (75.52%)
Optimal size: 40 bytes (-8 bytes, 16.67%)
class FormLayoutWidgetItem // location: /k/kde5/src/kwidgetsaddons/src/kcolumnresizer.cpp:30
{
    inherits QWidgetItem ; // member offset: 0, size: 24, alignment: 8
    int m_width; // member offset: 24, size: 4, alignment: 4
    // 4 byte(s) padding
    QFormLayout* m_formLayout; // member offset: 32, size: 8, alignment: 8
    ItemRole m_itemRole; // member offset: 40, size: 4 (needed: 2 bits), alignment: 4
    // 4 byte(s) padding
}; // size: 48, alignment: 8

Used bytes: 82/96 (85.42%)
Used bits: 642/768 (83.59%)
Optimal size: 88 bytes (-8 bytes, 8.333%)
class KDateTable::KDateTablePrivate // location: /k/kde5/src/kwidgetsaddons/src/kdatetable.cpp:35
{
    KDateTable* q; // member offset: 0, size: 8, alignment: 8
    int fontsize; // member offset: 8, size: 4, alignment: 4
    // 4 byte(s) padding
    QDate m_date; // member offset: 16, size: 8, alignment: 8
    int m_weekDayFirstOfMonth; // member offset: 24, size: 4, alignment: 4
    int m_numDaysThisMonth; // member offset: 28, size: 4, alignment: 4
    QRectF m_maxCell; // member offset: 32, size: 32, alignment: 8
    int m_numWeekRows; // member offset: 64, size: 4, alignment: 4
    int m_numDayColumns; // member offset: 68, size: 4, alignment: 4
    bool m_popupMenuEnabled; // member offset: 72, size: 1 (needed: 1 bits), alignment: 1
    bool m_useCustomColors; // member offset: 73, size: 1 (needed: 1 bits), alignment: 1
    // 6 byte(s) padding
    QHash<int, KDateTable::KDateTablePrivate::DatePaintingMode> m_customPaintingModes; // member offset: 80, size: 8, alignment: 8
    int m_hoveredPos; // member offset: 88, size: 4, alignment: 4
    // 4 byte(s) padding
}; // size: 96, alignment: 8

Used bytes: 189/200 (94.5%)
Used bits: 1506/1600 (94.12%)
Optimal size: 192 bytes (-8 bytes, 4%)
class KFontChooser::Private // location: /k/kde5/src/kwidgetsaddons/src/kfontchooser.cpp:79
{
    KFontChooser* q; // member offset: 0, size: 8, alignment: 8
    QPalette m_palette; // member offset: 8, size: 16, alignment: 8
    bool signalsAllowed:1; // member offset: 24, size: 1 (needed: 1 bits), alignment: 1, bit offset: 7
    bool usingFixed:1; // member offset: 24, size: 1 (needed: 1 bits), alignment: 1, bit offset: 6
    // 7 byte(s) padding
    QDoubleSpinBox* sizeOfFont; // member offset: 32, size: 8, alignment: 8
    QTextEdit* sampleEdit; // member offset: 40, size: 8, alignment: 8
    QLabel* familyLabel; // member offset: 48, size: 8, alignment: 8
    QLabel* styleLabel; // member offset: 56, size: 8, alignment: 8
    QCheckBox* familyCheckbox; // member offset: 64, size: 8, alignment: 8
    QCheckBox* styleCheckbox; // member offset: 72, size: 8, alignment: 8
    QCheckBox* sizeCheckbox; // member offset: 80, size: 8, alignment: 8
    QLabel* sizeLabel; // member offset: 88, size: 8, alignment: 8
    QListWidget* familyListBox; // member offset: 96, size: 8, alignment: 8
    QListWidget* styleListBox; // member offset: 104, size: 8, alignment: 8
    QListWidget* sizeListBox; // member offset: 112, size: 8, alignment: 8
    QCheckBox* sizeIsRelativeCheckBox; // member offset: 120, size: 8, alignment: 8
    QFont selFont; // member offset: 128, size: 16, alignment: 8
    QString selectedStyle; // member offset: 144, size: 8, alignment: 8
    qreal selectedSize; // member offset: 152, size: 8, alignment: 8
    int customSizeRow; // member offset: 160, size: 4, alignment: 4
    // 4 byte(s) padding
    QString standardSizeAtCustom; // member offset: 168, size: 8, alignment: 8
    QHash<QString, QString> qtFamilies; // member offset: 176, size: 8, alignment: 8
    QHash<QString, QString> qtStyles; // member offset: 184, size: 8, alignment: 8
    QHash<QString, QString> styleIDs; // member offset: 192, size: 8, alignment: 8
}; // size: 200, alignment: 8

Used bytes: 25/40 (62.5%)
Used bits: 173/320 (54.06%)
Optimal size: 32 bytes (-8 bytes, 20%)
class KCapacityBar::Private // location: /k/kde5/src/kwidgetsaddons/src/kcapacitybar.cpp:43
{
    int value; // member offset: 0, size: 4, alignment: 4
    // 4 byte(s) padding
    QString text; // member offset: 8, size: 8, alignment: 8
    bool fillFullBlocks; // member offset: 16, size: 1 (needed: 1 bits), alignment: 1
    bool continuous; // member offset: 17, size: 1 (needed: 1 bits), alignment: 1
    // 2 byte(s) padding
    int barHeight; // member offset: 20, size: 4, alignment: 4
    Alignment horizontalTextAlignment; // member offset: 24, size: 4, alignment: 4
    ControlElement ce_capacityBar; // member offset: 28, size: 4 (needed: 10 bits), alignment: 4
    DrawTextMode drawTextMode; // member offset: 32, size: 4 (needed: 1 bits), alignment: 4
    // 4 byte(s) padding
}; // size: 40, alignment: 8

Used bytes: 176/184 (95.65%)
Used bits: 1408/1472 (95.65%)
Optimal size: 176 bytes (-8 bytes, 4.348%)
class KPasswordDialog::KPasswordDialogPrivate // location: /k/kde5/src/kwidgetsaddons/src/kpassworddialog.cpp:36
{
    KPasswordDialog* q; // member offset: 0, size: 8, alignment: 8
    KPasswordDialogFlags m_flags; // member offset: 8, size: 4, alignment: 4
    // 4 byte(s) padding
    Ui_KPasswordDialog ui; // member offset: 16, size: 136, alignment: 8
    QMap<QString, QString> knownLogins; // member offset: 152, size: 8, alignment: 8
    QComboBox* userEditCombo; // member offset: 160, size: 8, alignment: 8
    QLabel* pixmapLabel; // member offset: 168, size: 8, alignment: 8
    unsigned int commentRow; // member offset: 176, size: 4, alignment: 4
    // 4 byte(s) padding
}; // size: 184, alignment: 8

Used bytes: 55/72 (76.39%)
Used bits: 420/576 (72.92%)
Optimal size: 64 bytes (-8 bytes, 11.11%)
class KRatingPainter::Private // location: /k/kde5/src/kwidgetsaddons/src/kratingpainter.cpp:30
{
    int maxRating; // member offset: 0, size: 4, alignment: 4
    // 4 byte(s) padding
    QIcon icon; // member offset: 8, size: 8, alignment: 8
    bool isEnabled; // member offset: 16, size: 1 (needed: 1 bits), alignment: 1
    bool bHalfSteps; // member offset: 17, size: 1 (needed: 1 bits), alignment: 1
    // 2 byte(s) padding
    Alignment alignment; // member offset: 20, size: 4, alignment: 4
    LayoutDirection direction; // member offset: 24, size: 4 (needed: 2 bits), alignment: 4
    // 4 byte(s) padding
    QPixmap customPixmap; // member offset: 32, size: 32, alignment: 8
    int spacing; // member offset: 64, size: 4, alignment: 4
    // 4 byte(s) padding
}; // size: 72, alignment: 8


Thanks,

Volker Krause

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20150418/c307b1c3/attachment-0001.html>


More information about the Kde-frameworks-devel mailing list