天天看點

[程式設計技巧] C++中優化BOOL 變量的聲明

通常我們會這樣聲明BOOL 變量:

class CMyClass {

...

BOOL m_bVar1;

BOOL m_bVar2;

BOOL m_bVar3;

BOOL m_bVar4;

BOOL m_bVar5;

BOOL m_bVar6;

BOOL m_bVar7;

BOOL m_bVar8;

};

考慮到BOOL 變量在Win32 下其實是一個int ,占4個位元組,那麼上面8個BOOL變量就會占去 32個位元組。

typedef int BOOL; // BOOL takes 4 bytes

其實,我們可以改變BOOL變量的聲明來使之隻占一個bit:

BOOL m_bVar1:1;

BOOL m_bVar2:1;

BOOL m_bVar3:1;

BOOL m_bVar4:1;

BOOL m_bVar5:1;

BOOL m_bVar6:1;

BOOL m_bVar7:1;

BOOL m_bVar8:1;

上面的代碼中,每個BOOL 變量隻占了1個比特(bit), 那麼上面8個BOOL變量就會占去 1個位元組。 

記憶體節省了32倍!!!

不過從另外一方面, CPU 在處理這些bit類型的BOOL變量的時候, 需要做位運算來把其中的值取出來, 是以會額外消耗CPU資源。 使用的時候需要綜合考慮記憶體和速度之間關系。

 本文轉自 陳本峰 51CTO部落格,原文連結:http://blog.51cto.com/wingeek/273993,如需轉載請自行聯系原作者

繼續閱讀