程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中優化BOOL變量的聲明

C++中優化BOOL變量的聲明

編輯:關於C++

通常我們會這樣聲明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:

class CMyClass {
...
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資源。使用的時候需要綜合考慮內存和速度之間關系。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved