C++中优化BOOL 变量的声明
中国IT站 www.chinaitz.com 2009-3-20
通常我们会这样声明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资源。 使用的时候需要综合考虑内存和速度之间关系。
评论加载中...相关资讯
- 2009-3-28C++实现自动为对象添加“属性”访问代码
- 2009-3-26在 MFC 和 ATL 工程中使用动画GIF
- 2009-3-20Visual Studio 2010中的C++ IDE增强
- 2009-3-20C++中优化BOOL 变量的声明
- 2009-3-20Shader学习心得(2):FX的功能之Insert Snippets,以及贴图的shader实现
- 2009-3-20Shader学习心得(1):工欲善其事,必先利其器-FX Composer 2.5
- 2009-3-7由Tencent://Message协议想到的一个解决方案
- 2009-3-6CodeFx:一站式微软开发技术解决方案
- 2009-3-6《Effective C++》读书笔记10:令operator=返回一个引用指向*this
- 2009-3-6《Effective C++》读书笔记09:绝不在构造和析构过程中调用virtual函数
